leetcode 3sum
来源:互联网 发布:serge lang知乎 编辑:程序博客网 时间:2024/05/02 03:01
class Solution(object): def threeSum(self, nums): """ :type nums: List[int] :rtype: List[List[int]] """ results = [] target_pre = None nums.sort() for index_i in range(len(nums)-2): sums = set() j_pre = None target = -nums[index_i] if target == target_pre: continue else: target_pre = target for j in nums[index_i+1:]: if j == j_pre: continue if target-j in sums: if j < target-j: results.append([-target,j,target-j]) else: results.append([-target,target-j,j]) j_pre = j else: sums.add(j) return results
基于set的并不优雅的O(N*N*lgN)算法,
一个O(N*N)算法:
public List<List<Integer>> threeSum(int[] num) { ArrayList<List<Integer>> result = new ArrayList<List<Integer>>(); Arrays.sort(num); for (int i=0; i < num.length; i++) { int start = i + 1, end = num.length-1; while (start < end) {//Two pointers int sum = num[i] + num[start] + num[end]; if (sum == 0) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(num[i]); list.add(num[start]); list.add(num[end]); result.add(list); start++; end--; while((start < end) && num[start] == num[start-1]) start++; //remove duplicates while((start < end) && num[end] == num[end+1]) end--; } else if (sum < 0) { start++; while((start < end) && num[start] == num[start-1]) start++; //remove duplicates } else { end--; while((start < end) && num[end] == num[end+1]) end--; //remove duplicates } } while (i+1 < num.length && num[i+1] == num[i]) //remove duplicates i++; } return result;}
0 0
- 【Leetcode】3Sum (Sum)
- Leetcode:2Sum,3Sum
- 【Leetcode】3Sum Closest (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: 3Sum
- LeetCode: 3 Sum Closest
- leetcode - 3 Sum
- leetcode - 3 sum closest
- leetcode 3Sum
- leetcode 3Sum Closest
- LeetCode: 3Sum
- Android分享一款漂亮的折叠书架菜单
- 重温排序法之--快速排序法
- jQuery第三课 ——元素尺寸、滚动距离、元素距离、jq事件、event对象
- Ubuntu15.04解决gedit中文显示乱码
- 黑马程序员--内存管理**重点
- leetcode 3sum
- Git中从远程的分支获取最新的版本到本地方式如下
- 收录一些常用的面试题目含参考答案(一)
- CSS在网页的中应用方式
- Android的四大组件之ContentProvider(对外程序共享数据)
- swing入门教程
- 聊天界面的制作(三)——表情列表发送功能
- Java Non-Blocking and Asynchronous IO with NIO & NIO.2 (JSR203) - Reactor/Proactor Implementations
- 用打表的方式解决求Geohash当前区域周围8个区域编码