LeetCode-15-3Sum(证明/KSum)-Medium
来源:互联网 发布:淘宝女外套 编辑:程序博客网 时间:2024/04/24 23:25
题目理解:
求解vector中三个数(a,b,c)之和为0,其中,a、b、c不能为重复值,并且按照a<b<c的规则进行排列;
解题分析:
1. 典型的KSum题目;
1)先排序;
2)首尾两端两个指针同时向对端移动;
3)过程中避免重复的结果;
题目的关键是证明两个指针向对端移动的过程中,不会漏掉有效的取值(可以使用反正法进行证明);
解题代码:
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> ans; int size=nums.size(); if(size<3){ return ans; } sort(nums.begin(),nums.end()); int pre=1;//the first element can not greater than 0 for(int i=0;i<size-2;i++){ if(nums[i]==pre){ continue; }else{ pre=nums[i]; } int left=i+1; int right=size-1; int preLeft, preRight; bool isInitLR=false; while(left<right){ int sum=nums[i]+nums[left]+nums[right]; if(sum>0){ right--; }else if(sum<0){ left++; }else{ if(!isInitLR){ isInitLR=true; }else{ if(nums[left]==preLeft){ left++; continue; } if(nums[right]==preRight){ right--; continue; } } vector<int> t; t.push_back(nums[i]); t.push_back(nums[left]); t.push_back(nums[right]); ans.push_back(t); preLeft=nums[left]; preRight=nums[right]; left++; right--; //cout<<"ans.push_back()"<<endl; } //cout<<"left= "<<left<<endl; //cout<<"right= "<<right<<endl; } } return ans; }};
0 0
- LeetCode-15-3Sum(证明/KSum)-Medium
- LeetCode-16-3Sum Closest(证明/KSum)-Medium
- LeetCode-18-4Sum(证明/KSum)-Medium
- 15.leetcode 3Sum(medium)[排序 查找 Ksum问题]
- leetcode - 3Sum ( kSum )
- leetcode--ksum问题--3sum
- LeetCode(3 Sum, 4sum, ksum)
- [Leetcode 15, medium] 3 Sum
- leetcode - 3Sum Closest (kSum Closest)
- LeetCode 求和问题总结(2sum,3sum,ksum)
- 【leetcode】第15题:3sum(medium)
- LeetCode OJ 15 3Sum [Medium]
- leetcode-18 4Sum(kSum)
- leetcode 18: 4Sum (KSum)
- [LeetCode] 015--3Sum --Medium--
- LeetCode 15. 3Sum (Medium)
- 【Ksum】求和问题总结(leetcode 2Sum, 3Sum, 4Sum, K Sum)
- [Leetcode][求和问题2Sum/3Sum/4Sum/KSum]相关题目汇总/分析/总结
- Java中的责任链模式
- sympy官方文档网站无法打开问题解决
- BAT巨头的开源项目
- Awesome R
- ViewPager只初始化当前页,不会提前初始化下一页的设置
- LeetCode-15-3Sum(证明/KSum)-Medium
- Android Studio 打混淆包遇到的问题
- 创建sqlite数据库
- TrafficStats 网络实时测速
- 【java微信开发】环境搭建
- java字符串操作简单总结
- iOS crash log 解析 symbol address = stack address - slide 运行时获取slide的api 利用dwarfdump从dsym文件中得到symbol
- 出来混,迟早要还的
- Awesome Python