leetcode_015 3sum
来源:互联网 发布:快速启动 软件 ash 编辑:程序博客网 时间:2024/05/22 13:59
首先想到的就是3次for循环,从头找到尾,但是time limite exceeded。
考虑优化一下,可以先排序,然后从头开始,找到其相反数
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { if (nums.size() < 3) return {}; sort(nums.begin(), nums.end()); vector<vector<int>> result; int k = 0; while (k < nums.size() && nums[k] <= 0) { int i = k + 1; int j = nums.size() - 1; while (i < j) { int sum = nums[i] + nums[j]; if (sum < -nums[k]) { i++; while (i < j && nums[i] == nums[i-1]) i++; } else if (sum > -nums[k]) { j--; while (i < j && nums[j] == nums[j+1]) j--; } else { result.push_back({nums[k], nums[i], nums[j]}); i++; while (i < j && nums[i] == nums[i-1]) i++; j--; while (i < j && nums[j] == nums[j+1]) j--; } } k++; while (k < i && nums[k] == nums[k-1]) k++; } return result; }};
这是别人写的代码。
0 0
- leetcode_015 3sum
- 2017-09-09 LeetCode_015 3Sum
- Two Sum && 3 Sum
- 【Leetcode】3Sum (Sum)
- 3Sum 3Sum Closest 4Sum
- 3Sum & 3Sum Closest & 4Sum
- 3sum、3Sum closet、 4sum
- 3Sum, 3Sum Closest, 4 Sum
- leetcode 2 sum 3sum 4sum
- 2Sum 3Sum 4Sum
- Leetcode 2SUM-3SUM-4SUM
- Leetcode-2sum,3sum,4sum
- leetcode 2 sum & 3 sum & 4 sum
- 3Sum
- 3SUM
- 3-sum
- 3Sum
- 3Sum
- IP合法性校验
- 二叉查找树算法的实现
- JS代码墙
- Git和adb的使用总结
- iOS Application 和 ViewController的生命周期
- leetcode_015 3sum
- 规则
- github 使用教程初级版
- 题目1386:旋转数组的最小数字 剑指offer08
- 属性动画之纷繁的星星
- Android手机在不同分辨率情况下字体自适应大小
- [转]ubuntu12.04管理员账户登录不了桌面,只能客人会话登录
- 769 乘数密码【字符串】
- android的中的触感反馈