这题我一看就觉得似曾相识,就和之前做的第一题“两数之和”一个思路:用双指针或者字典
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
if not nums and len(nums) < 3:
return []
nums.sort()
n = len(nums)
res = [] # 存放结果
for i in range(n):
if nums[i] > 0:
return res
if i > 0 and nums[i] == nums[i-1]:
continue
l, r = i+1, n-1
while(l < r):
if (nums[i] + nums[l] + nums[r] == 0):
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
elif(nums[i] + nums[l] + nums[r] > 0):
r -= 1
else:
l += 1
return res
今天电脑卡得出奇。。。
发现大家都好厉害啊,只有我是菜鸡,好孤单。。。好惨
写出来这个代码还是看了别人的,道理我都懂,写出来就是会错,我好无奈
有一种例行公事的赶脚。。。
不行,我要找一天把所有做过的题目都复盘一下