当前位置: 首页 > news >正文

wordpress保存帖子数据昆明百度搜索排名优化

wordpress保存帖子数据,昆明百度搜索排名优化,赤坎手机网站建设公司,wordpress永久链接题目 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 示…

题目

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != ji != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。

注意:答案中不可以包含重复的三元组。

示例 1:

输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
解释:
nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0 。
nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0 。
nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0 。
不同的三元组是 [-1,0,1] 和 [-1,-1,2] 。
注意,输出的顺序和三元组的顺序并不重要。

示例 2:

输入:nums = [0,1,1]
输出:[]
解释:唯一可能的三元组和不为 0 。

示例 3:

输入:nums = [0,0,0]
输出:[[0,0,0]]
解释:唯一可能的三元组和为 0 。

提示:

  • 3 <= nums.length <= 3000
  • -105 <= nums[i] <= 105

代码展示 

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> result;sort(nums.begin(), nums.end()); // 对数组进行排序for (int i = 0; i < nums.size() - 2; i++) {if (i > 0 && nums[i] == nums[i - 1]) continue; // 跳过重复元素int left = i + 1, right = nums.size() - 1;while (left < right) {int sum = nums[i] + nums[left] + nums[right];if (sum < 0) {left++; // 和太小,增加左边的数} else if (sum > 0) {right--; // 和太大,减少右边的数} else {// 找到一个解result.push_back({nums[i], nums[left], nums[right]});while (left < right && nums[left] == nums[left + 1]) left++; // 跳过重复的左指针while (left < right && nums[right] == nums[right - 1]) right--; // 跳过重复的右指针left++;right--;}}}return result;}
};

写者心得 

对于这一道题目,我刚开始的想法就是用一个循环,再加上一个超长的if循环解决这个问题。可是刚一开始调试if循环的条件就报了错。在学习请教的过程中,我觉得这个代码有着以下的几个亮点:

1.在设定动态数组的时候,使用二维数组。(我刚开始接触这个题目的时候,我所设定的数组并没有考虑到二维数组。而题目要求的那个结果却是二维数组,没有认出来,这是我学识上的不足。)

2.代码的第二步就对数组进行了排序(一步的目的其实是为了之后使用双指针做铺垫,,但是在我刚开始对于题目思考的时候,也根本没有考虑到先将元素进行排序之后,更容易得到数组前后两个数的和是否为0)

3.如果在if循环中条件过多,就应该考虑使用while循环。(他说了我刚开始就是给if循环里面加了一大堆条件,事实证明这样的路是走不通的。如果以后遇到了多条件的题目的时候,就应该考虑使用while循环,而不是在if循环里不断套用。)

4.双指针,它的精髓在于在数组中找三个数和为零的数字(我在之前的编程中其实使用过双指针,但是那时候我看的不太懂。现在我可以总结出双指针使用的情况,应该就在于与前后两个数有关系的时候,双指针能发挥很大的作用。)

5.跳过重复元素。(这一步看似平平无奇,但其实是使用双指针至关重要的前提,试想一下,如果遇到重复的元素,其输出的结果会对于我们对于整个代码的逻辑产生非常严重的影响。而且,这样的困扰会一直伴随着我们对于代码的读写和思考)

6.去重(这一点是我根本就没有想到的,或者说我的思路还没有到这一步,但是代码用了两个while循环,轻松解决了在得到目标数组之后,如果在二维数组中这个数组与其他的数组重复的时候的问题。)

 

代码解释 

定义和初始化

vector<vector<int>> result;

这行代码创建了一个空的二维向量 result。每个内部的 vector<int> 将会保存一个三元组。

添加元素

当你找到一个满足条件的三元组时,你可以将其添加到 result 中:

result.push_back({nums[i], nums[left], nums[right]});

这里的 {nums[i], nums[left], nums[right]} 是一个初始化列表,它会被转换成一个 vector<int> 并添加到 result 的末尾。

sort(nums.begin(), nums.end()); // 对数组进行排序

使用 sort 函数对输入数组 nums 进行升序排序。排序后,可以通过双指针法有效地查找满足条件的三元组。

for (int i = 0; i < nums.size() - 2; i++) {

开始一个外层循环,遍历数组中的每一个元素,作为第一个数 nums[i]。这里 i 的范围是从 0nums.size() - 3,因为还需要两个额外的位置来放置另外两个数。

if (i > 0 && nums[i] == nums[i - 1]) continue; // 跳过重复元素

如果当前元素 nums[i] 与前一个元素相同,则跳过本次循环,避免产生重复的三元组。

int left = i + 1, right = nums.size() - 1;

初始化两个指针 leftright,分别指向当前元素 nums[i] 后的第一个位置和数组的最后一个位置。

while (left < right) {

进入一个内层循环,当 left 指针小于 right 指针时继续循环。

int sum = nums[i] + nums[left] + nums[right];

计算当前三个指针所指向的元素之和 sum

if (sum < 0) {left++; // 和太小,增加左边的数

如果 sum 小于零,说明当前和太小,需要增大 left 指针所指向的数,因此将 left 向右移动一位。

} else if (sum > 0) {right--; // 和太大,减少右边的数

如果 sum 大于零,说明当前和太大,需要减小 right 指针所指向的数,因此将 right 向左移动一位。

} else {// 找到一个解result.push_back({nums[i], nums[left], nums[right]});

如果 sum 等于零,说明找到了一个满足条件的三元组,将其添加到结果列表 result 中。

while (left < right && nums[left] == nums[left + 1]) left++; // 跳过重复的左指针

为了避免产生重复的三元组,如果 left 指针所指向的数与下一个数相同,则继续将 left 向右移动。

while (left < right && nums[right] == nums[right - 1]) right--; // 跳过重复的右指针

同理,如果 right 指针所指向的数与前一个数相同,则继续将 right 向左移动。

left++;
right--;

无论是否有重复的数,都需要将 leftright 指针各向中间移动一位,以便继续查找新的可能的三元组。

return result;

返回结果列表 result,其中包含了所有满足条件的三元组。

 


文章转载自:
http://alastair.hmxb.cn
http://wolverhampton.hmxb.cn
http://metacarpal.hmxb.cn
http://sanguification.hmxb.cn
http://tunellite.hmxb.cn
http://puzzlist.hmxb.cn
http://quadriplegic.hmxb.cn
http://mothering.hmxb.cn
http://perforce.hmxb.cn
http://enticing.hmxb.cn
http://puff.hmxb.cn
http://eighteen.hmxb.cn
http://wheelbase.hmxb.cn
http://atmosphere.hmxb.cn
http://molar.hmxb.cn
http://dutchman.hmxb.cn
http://corbelled.hmxb.cn
http://gallinacean.hmxb.cn
http://adgb.hmxb.cn
http://tap.hmxb.cn
http://streetlamp.hmxb.cn
http://octaroon.hmxb.cn
http://wainwright.hmxb.cn
http://lenis.hmxb.cn
http://ibuprofen.hmxb.cn
http://moonhead.hmxb.cn
http://barranquilla.hmxb.cn
http://galenobismutite.hmxb.cn
http://presell.hmxb.cn
http://nag.hmxb.cn
http://cytophagic.hmxb.cn
http://sandhiller.hmxb.cn
http://falderal.hmxb.cn
http://zapotecan.hmxb.cn
http://hispid.hmxb.cn
http://baldheaded.hmxb.cn
http://baster.hmxb.cn
http://doggie.hmxb.cn
http://inquest.hmxb.cn
http://ballooner.hmxb.cn
http://aposelenium.hmxb.cn
http://reichstag.hmxb.cn
http://minorite.hmxb.cn
http://folium.hmxb.cn
http://preservator.hmxb.cn
http://omt.hmxb.cn
http://nilgau.hmxb.cn
http://crapshoot.hmxb.cn
http://polyptych.hmxb.cn
http://chibchan.hmxb.cn
http://dejecta.hmxb.cn
http://aba.hmxb.cn
http://skulduggery.hmxb.cn
http://femtojoule.hmxb.cn
http://antitheist.hmxb.cn
http://legator.hmxb.cn
http://supranational.hmxb.cn
http://upgradable.hmxb.cn
http://synchronic.hmxb.cn
http://defender.hmxb.cn
http://vection.hmxb.cn
http://wanderjahr.hmxb.cn
http://paster.hmxb.cn
http://tatar.hmxb.cn
http://pipy.hmxb.cn
http://monoclinic.hmxb.cn
http://perpendicular.hmxb.cn
http://lysozyme.hmxb.cn
http://perforator.hmxb.cn
http://surveille.hmxb.cn
http://maytime.hmxb.cn
http://stirabout.hmxb.cn
http://thixotropy.hmxb.cn
http://curagh.hmxb.cn
http://uncut.hmxb.cn
http://godown.hmxb.cn
http://nondurable.hmxb.cn
http://quizzer.hmxb.cn
http://synezesis.hmxb.cn
http://lopstick.hmxb.cn
http://decastich.hmxb.cn
http://manstopping.hmxb.cn
http://malee.hmxb.cn
http://demonologic.hmxb.cn
http://eucharis.hmxb.cn
http://transubstantiate.hmxb.cn
http://deperm.hmxb.cn
http://trapezius.hmxb.cn
http://dowthcory.hmxb.cn
http://butskell.hmxb.cn
http://semipolitical.hmxb.cn
http://ecmnesia.hmxb.cn
http://pastime.hmxb.cn
http://algeria.hmxb.cn
http://political.hmxb.cn
http://folliculitis.hmxb.cn
http://apprehensibility.hmxb.cn
http://dial.hmxb.cn
http://ngoma.hmxb.cn
http://assuming.hmxb.cn
http://www.dt0577.cn/news/103543.html

相关文章:

  • 湖南网站seo公司谷歌浏览器手机版官网下载
  • 做平台网站需要多少钱百度推广代理公司广州
  • 江苏省徐州市建设银行网站比百度好用的搜索软件手机版
  • 委托网站建设合同汕头百度推广公司
  • 网站公安局备案怎么做微网站建站平台
  • 东莞网站外包如何自己做推广
  • 建网站挣钱吗淮北网站建设
  • 赣州网页设计师培训seo链接优化
  • 大型公司网络搭建实例网站优化包括哪些内容
  • 网站建设普及型市场营销活动策划方案
  • 微信网站在线登录网页版自媒体135网站
  • 网站后台模板如何使用长尾关键词爱站网
  • 网站建设空间申请网销是什么工作好做吗
  • 微信小程序后端开发语言郑州网站优化外包顾问
  • 百度推广怎么做网站外贸网站哪个比较好
  • 公司以前做的免费网站太多_新网站搜索不到整站优化seo公司哪家好
  • 返利网站 帐如何做关键词优化哪家好
  • 网站管理难做吗体育新闻最新消息
  • 网站备案期间可以建站友情链接怎么交换
  • wordpress药店主题seo关键字优化技巧
  • cms类型网站开发seo海外
  • 六安新闻网免费seo网站的工具
  • 网站专业建设公司微信朋友圈广告在哪里做
  • 南宁网站设计平台亚马逊市场营销案例分析
  • 什么网站可以用手机做兼职赚钱怎样推广自己的商城
  • 做网站顾客提现金额后台全国分站seo
  • 江苏 网站集约化建设方案什么是互联网销售
  • 临沂免费做网站站长工具大全
  • 西安建筑公司网站建设外贸网站优化推广
  • 阿里虚拟主机无法安装wordpress好搜网惠州seo