题目来源:https://leetcode-cn.com/problems/3sum/
思路:若要a + b + c = 0
,那么如果只需要a + b = -c
。这样一来,三数之和就转化为两数之和的问题了。
class Solution:
def threeSum(self, nums: List[int]) -> List[List[int]]:
# 设置例外情况
L = len(nums) # 数组中元素个数,这是一个常数
if(L < 3): # 如果数组中元素少于3个,那么直接返回None
return None
nums.sort() # 先对数组进行排序
res = list() # 返回结果用的数组
tmp = list()
# 设置一个“停止点”,即排序好的数组从哪里开始是0以下和0以上的分界点
stop = 0 # 停止点
for i in range(L):
if nums[i] >= 0:
stop = i
break
else:
pass
# 设置左指针和右指针
left, right = 0, L -1
sum_ab = 0
c = 0 # c
# 开始跑
if (nums[0] >= 0) or (nums[L - 1] <= 0): # 排除一个数组全大于0或全小于0的情况
return None
else:
for i in range()
网友评论