Leetcode: 4Sum
来源:互联网 发布:网易云 播放失败 mac 编辑:程序博客网 时间:2024/05/17 05:37
思路:这次解法的时间复杂度是O(n^3),过程如下:
1、先对数组排序;
2、一次选出数组的两个元素;
3、再前面两个元素的后面分别标记两个前后索引,得到新的两个元素,与前面的两个元素相加,有3种情况考虑,1)如果和等于目标值,得到一个解,前索引后移,后索引前移去发掘新的解,2)如果和大于目标值,后索引前移以便减少和,3)和小于目标值,前索引后移增大和;
4、回到第2步,直到挑选完所有的数组元素。
注意:因为题目不能出现重复解,所以在记录解的数据结构中,最好采用set这一个值不会重复出现的结构,否则,需要在搜索过程中加以剔除重复元素。
code:
class Solution {public: vector<vector<int> > fourSum(vector<int> &num, int target) { vector<vector<int> > ret; int len = num.size(); if(len <4)return ret; sort(num.begin(),num.end()); vector<int> temp(4); set<vector<int>> setRet; for(int i=0;i <len-3;i++){ temp[0] = num[i]; for(int j=i+1;j<len - 2;j++){ temp[1] = num[j]; int tempTarget = target - temp[0] - temp[1]; int l = j+1, r = len-1; while(l<r){ if(num[l] + num[r] == tempTarget){ temp[2] = num[l]; temp[3] = num[r]; setRet.insert(temp); r--; l++; } else if(num[l] + num[r] > tempTarget) r--; else l++; } } } set<vector<int>>::iterator it = setRet.begin(); for(;it!=setRet.end();it++) ret.push_back(*it); return ret; }};
0 0
- 【Leetcode】4Sum (Sum)
- leetcode 2 sum 3sum 4sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- [LeetCode] 2Sum, 3Sum, 4Sum, 3SUm closet
- [LeetCode] K sum(2Sum、3Sum、4Sum)
- leetcode--sum集合:2sum,3sum,4sum
- leetcode --- 2 sum , 3 sum , 4 sum , k sum problem
- LeetCode: 4 Sum
- LeetCode: 4Sum
- LeetCode 4Sum
- Leetcode: 4SUM
- 【leetcode】 4 sum
- LeetCode 4Sum
- leetcode 44: 4Sum
- [Leetcode] 4 Sum [Unsolved]
- 【leetcode】4Sum
- SGML简单语法
- 风格反对改革
- Python第一天:初始Python
- Ubuntu环境下卸载和安装QQ/TM(wine-qq201X)
- Javascript 函数之小分析
- Leetcode: 4Sum
- 如何打开打开xml文件的方法和软件。
- 模糊背景设计的优雅
- wamp配置多域名多站点
- 金钻切割片100*2.5*16 递迪五金 品质保障
- 通过广播关闭应用程序(每个Activity)和连续点击两次返回键关闭应用程序
- 莱利:韦德詹皇都将在热火退役 四巨头如白日梦
- jcifs实现Java+AD的SSO解决方案,碰到的问题
- H.264 基础及 RTP 封包详解