LeetCode : No15 3Sum
来源:互联网 发布:java多线程死锁 编辑:程序博客网 时间:2024/06/14 02:50
题目
https://leetcode.com/problems/3sum/:
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero
三次循环:
Time Limit Exceeded
class Solution: # @param {integer[]} nums # @return {integer[][]} def threeSum(self, nums): RES = [] L = len(nums) for i in range(L): for j in range(i+1,L): for k in range(j+1,L): if nums[i]+nums[j]+nums[k] == 0: temp = sorted([nums[i],nums[j],nums[k]]) if temp not in RES: RES.append(temp) return RES
方法二:
这种方法应该算是O(n^2)的复杂度,为何还是会Time Limit Exceeded
class Solution: # @param {integer[]} nums # @return {integer[][]} def threeSum(self, nums): sortNums = sorted(nums) RES = [] for i in range(len(sortNums)): tmp = self.twoSum(list(sortNums[0:i])+list(sortNums[i+1:]),0-sortNums[i]) if tmp: if isinstance(tmp[0],list): for k in tmp: Restemp = sorted(k+[sortNums[i]]) if Restemp not in RES: RES.append(Restemp) else: Restemp = sorted(tmp+[sortNums[i]]) if Restemp not in RES: RES.append(Restemp) return RES def twoSum(self, sortnums, Sum): RES = [] i = 0 j = len(sortnums) - 1 while (i < j): if sortnums[i] + sortnums[j] == Sum: RES.append([sortnums[i],sortnums[j]]) i += 1 j -= 1 elif sortnums[i] + sortnums[j] > Sum: j -= 1 else: i += 1 return RES
方法三:其实和方法二一样的思路,这个更为明确,逻辑性更强=-=
耗时:201ms
class Solution: # @param {integer[]} nums # @return {integer[][]} def threeSum(self, nums): sortNums = sorted(nums) RES = [] i = 0 while (i < len(sortNums)-2): j = i+1 k = len(sortNums)-1 while (j<k): Sum = sortNums[i] + sortNums[j] + sortNums[k] if Sum == 0: RES.append([sortNums[i],sortNums[j],sortNums[k]]) while (j<k) and sortNums[j] == sortNums[j+1]: j += 1 j += 1 while (j<k and sortNums[k] == sortNums[k-1]): k -= 1 k -= 1 elif Sum < 0: j += 1 else: k -= 1 while i<len(sortNums)-2 and sortNums[i]==sortNums[i+1]: i += 1 i += 1 return RES
0 0
- LeetCode : No15 3Sum
- leetcode No15. 3Sum
- 【LeetCode从零单排】No15 3Sum
- 【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
- FMDB库使用总结
- LTE-接收端信号处理
- Matplotlib图表上输出中文(汉字)、减号问题
- POJ 2151 Check the difficulty of problems(概率dp啊)
- python操作mysql
- LeetCode : No15 3Sum
- 使用框架帮助Activity规范化
- ACDREAM 1726 A Math game(折半枚举+hash)
- Android之AsyncTask类
- 围住浮动元素的三种方法
- 线程通信
- android context
- 基于命令行编译打包phonegap for android应用
- 一个超漂亮的Java版博客系统,内置14套皮肤,已经转化为标准的Eclipse项目,直接导入即可