4sum
来源:互联网 发布:剑灵力士卡刀软件 编辑:程序博客网 时间:2024/05/29 15:26
题目:
点击打开链接
解答:
参考网上的一份比较标准的代码。
做法: 先转化为求3sum 然后再转化为求2sum
通过只从小到大搜索,跳过重复元素,来达到避免结果重复的目的。
代码:
class Solution { public: vector<vector<int> > fourSum(vector<int> &num, int target) { int i, j, k, l, sum; vector<int> temp; vector<vector<int> > res; sort(num.begin(), num.end()); for (i = 0; i < num.size(); i++) { if (i != 0 && num[i] == num[i - 1]) continue; //为什么要j = i+1; 因为元素从小到大排列 //所以从小到大进行查找,肯定不会遗漏元素。 for (j = i + 1; j < num.size(); j++) { if (j != i + 1 && num[j] == num[j - 1]) continue; k = j + 1; l = num.size() - 1; while(k<l) { sum = num[i] + num[j] + num[k] + num[l]; if (target > sum) { ++k; } else if (target < sum) { --l; } //在这里避免重复元素 else if (k != j + 1 && num[k] == num[k - 1]) { ++k; } //在这里避免重复元素 else if (l != num.size() - 1 && num[l] == num[l + 1]) { --l; } else { temp.clear(); temp.push_back(num[i]); temp.push_back(num[j]); temp.push_back(num[k]); temp.push_back(num[l]); res.push_back(temp); ++k; --l; } } } } return res; } };
0 0
- 【Leetcode】4Sum (Sum)
- leetcode 2 sum 3sum 4sum
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 2Sum 3Sum 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 4Sum
- 苹果Mac下LAMP环境的搭建
- 权限:user权限,folder 权限
- HOJ 1551 Polylops(简单数学题)
- 搜索. Poj1324. Holedox Moving.
- 简单实现窗口拖动
- 4sum
- OCP试题解析之053-61 RMAN set command id to
- 事件:事件的类型 作用
- Flash Builder4.0新建Flex应用程序切换主题出错
- Java读取txt文件中内容作为测试用例中的参数
- universe里面的限制:如何定义限制,使用限制
- xcode 4.2 不再支持 Window-Based Application 的解决办法:
- 黑马程序员 C语言 - 02 基本运算
- Managing Access Level in the CMC