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

保姆给老人做爰神马网站网站建设参考文献

保姆给老人做爰神马网站,网站建设参考文献,企业 手机门户网站,山东中迅网站建设一、题目解析1.不重复结合示例1,我们能知道[-1,0,1]和[0,1,-1]是相同的三元组,因为他们包含相同的元素。2.顺序不重要同样结合示例1 ,输出顺序不重要是指在输出结果时,不关心三元组的顺序;三元组顺序是指三元组内元素排…

一、题目解析

1.不重复

结合示例1,我们能知道[-1,0,1]和[0,1,-1]是相同的三元组,因为他们包含相同的元素。

2.顺序不重要

同样结合示例1 ,输出顺序不重要是指在输出结果时,不关心三元组的顺序;三元组顺序是指三元组内元素排列顺序不重要,例[-1,0,1],也可以是[0,-1,1]、[0,1,-1]等等

二、算法原理

解法1:排序+暴力枚举+set去重 时间复杂度为0(N^3)

毫无疑问这是暴力解法,但我们需要了解暴力解法,便于我们在暴力解法的基础上优化。

解法2:排序+双指针+set去重 时间复杂度为0(N^2)

1.先对数组进行排序

2.固定nums[i],当nums[i]>0,找不到满足的三元组 (排序过后,nums[i]以后都是正数,无法找到负数,使其和为0)

3.在该数后面的区间内,利用“双指针算法”,快速找到两个和为-nums[i]

解法3:排序+双指针+不用set去重 时间复杂度为O(N^2)

为了避免面试时遇到该问题,面试官不允许使用set去重,故多一种解法

1.在双指针区间内找到一种结果之后,left和right指针越过重复元素

2.当使用完一次双指针算法之后,i也需要越过重复元素

细节问题

1.如何保证不漏

在双指针区间内找到一种结果后,不要停,缩小区间继续寻找

2.避免越界问题

在越过重复元素时,需注意越界问题

可以先尝试解法2,然后再去试试解法3,提升自己的代码能力

三、代码示例

解法2:

vector<vector<int>> threeSum(vector<int>& nums){set<vector<int>> s;//set具有去重的性质vector<vector<int>> vv;sort(nums.begin(),nums.end());//排序if(nums[0] == 0 && nums[nums.size()-1] == 0){vv.push_back({0,0,0});//这里会自己转化为vector<int>return vv;}int i = 0,a = 0;int left = 0,right = 0;for(;i<nums.size();i++){a = nums[i];if(a>0) break;//当a<=0时,才存在三元组left = i+1;right = nums.size()-1;if(left>right) break;while(left < right){if(nums[left]+nums[right] < -a) left++;else if(nums[left]+nums[right] > -a) right--;else{s.insert({nums[i],nums[left],nums[right]});left++;right--;}}}for(auto e : s)//范围for,从s中依次取出元素{vv.push_back(e);}return vv;}

 

解法3:

vector<vector<int>> threeSum(vector<int>& nums){vector<vector<int>> ret;sort(nums.begin(),nums.end());int n = nums.size();for(int i = 0;i<n;){if(nums[i]>0) break;int left = i+1,right = n-1,target = -nums[i];while(left<right){int sum = nums[left]+nums[right];if(sum>target) right--;else if (sum<target) left++;else{ret.push_back({nums[i],nums[left],nums[right]});left++,right--;//去重操作while(left<right && nums[left] == nums[left-1]) left++;while(left<right && nums[right] == nums[right+1]) right--;}}//去重ii++;//这里代替for循环++功能,所以for循环处为空while(i < n && nums[i] == nums[i-1]) i++;}return ret;}

 

 可以看的出来,解法2最方便,但时间和空间上都比不过解法3,但解法3需要注意数组越界问题,所以在理解的基础上掌握解法3,无疑是最优选择

看到最后,如果对您有所帮助,还请点赞、关注和收藏,我们下期再见!

http://www.dtcms.com/a/451797.html

相关文章:

  • 口碑好的镇江网站建设系统优化大师免费版
  • 河北网站制作公司托管网站
  • 耒阳市网站建设应用小程序定制开发
  • 企业网站建设费计入什么科目网站建设出错1004
  • 精美手机网站模板正邦设计有限公司
  • 医院网站源码下载小程序装修页面设计
  • 企业网站制作需要多少钱软件开发工具和环境
  • 清远公司网站建设制作网站项目流程
  • 东风多利卡道路清障车做网站设置网站默认首页
  • 网站建设小程序湖南云服务器做网站镜像类型选啥
  • 国内漂亮大气的网站wordpress 支付 API
  • 制作网站平台企业建设网站 意义何在
  • 【MLLM】Qwen3-Omni全模态模型源码解读
  • 美食网站设计论文家具网站模板下载
  • 徐州网站排名系统没有网站seo怎么做
  • 行唐网站建设建湖做网站哪家最好
  • 网站开发行业发展网站开发中怎么设置快捷键
  • 怎么做韩剧网站的翻译wordpress导出模板
  • 英文网站一般用什么字体兰州市城市建设设计院网站
  • 网站制作的内容包含动态设计用什么软件
  • 物流信息网站有哪些网站建设报价单初期整理
  • 用html5做网站百度经验常熟网页设计报价
  • 厦门企业网站制作做明星网站
  • 有没有做网站一次付费项目管理wordpress
  • 机器人控制基础:舵机应用总结
  • 网站制作多少钱建设一个网站需要哪些功能
  • 网站开发属于知识产权吗广州企业网站建设电话
  • 制定企业网站营销推广战略深圳建网站的专业公司
  • 集团公司网站案例wap网站seo
  • 免费毕业设计的网站建设青浦练塘网站建设