15. 3Sum
来源:互联网 发布:获取网站源码工具 编辑:程序博客网 时间:2024/06/05 05:56
python:
class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ res = [] nums.sort() #先对数组进行排序 for i in range(len(nums)-2): if i > 0 and nums[i] == nums[i-1]: #若当前元素与之前元素相同,不进行之后的操作,更新i=i+1 continue; #先选中一个元素nums[i],再在之后寻找另外两个元素nums[l],nums[r] l = i + 1 r = len(nums) - 1 while l < r: s = nums[i] + nums[l] + nums[r] if s < 0: l += 1 elif s > 0: r -= 1 else: res.append((nums[i],nums[l],nums[r])) while l < r and nums[l] == nums[l + 1]: l += 1 while l < r and nums[r] == nums[r - 1]: r -= 1 l += 1 r -= 1 return res
C++:
class Solution {public: vector<vector<int> > threeSum(vector<int> &num) { vector<vector<int> > res; int n = num.size(); sort(num.begin(), num.end()); for(int i = 0; i < n-2; i ++) { while(i > 0 && num[i] == num[i-1]) i ++; int l = i + 1; int r = n - 1; while(l < r) { int sum = num[i] + num[l] + num[r]; if(sum == 0) { vector<int> cur(3); cur[0] = num[i]; cur[1] = num[l]; cur[2] = num[r]; res.push_back(cur); l ++; r --; while(l < r && num[l] == num[l-1]) l ++; while(l > r && num[r] == num[r+1]) r --; } else if(sum < 0) { l ++; } else { r --; } } } return res; }};
阅读全文
0 0
- 15. 3Sum && 16 sum closet && 18 4sum
- 15. 3Sum 和 18. 4Sum
- 1. Two Sum&15. 3Sum
- LeetCode 15. 3Sum
- LeetCode --- 15. 3Sum
- [Leetcode] 15. 3Sum
- 【LeetCode】15. 3Sum
- 15. 3Sum
- 【leetcode】15. 3sum
- 【leetcode】15. 3Sum
- 15. 3Sum
- [leetcode] 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- 15. 3Sum
- leetcode 15. 3Sum
- 如何查看计算机端口使用情况
- 我从可用性测试中学到的五件事
- Python程序调用另一个Python程序
- 测试机器大小端存储的方法
- 有这么一项技术,据说可能取代云计算,你怎么看?
- 15. 3Sum
- cJSON array
- ef4.0写法
- 汉诺塔的递归解法
- bcb6 获取系统文件夹路径
- Android 构建和显示弹出消息 CoordinatorLayout+Snackbar
- Activity(不同APP)启动之源码分析
- ThreadPoolExecutor逻辑结构和工作方式
- 面向对象概述