class Solution:
def threeSum(self, nums):
final = []
z = 0
dPz = dict()
dFz = dict()
for num in nums:
if num > 0:
if num in dFz:
dFz[num] += 1
else:
dFz[num] = 1
elif num < 0:
if num in dPz:
dPz[num] += 1
else:
dPz[num] = 1
else:
z+=1
if z >= 3:
final.append([0,0,0])
# 如果大于0和小于0集合不为空
if len(dPz) !=0 and len(dFz)!=0:
# 对小于0数组遍历
for pi in dPz:
count = dPz[pi]
# 两个一样的负数,一个正数
if count>=2 and 2*pi*(-1) in dFz:
final.append([pi,pi,2*pi*(-1)])
# 一正一负,互为相反数,还有一个0
if z>0 and pi*(-1) in dFz:
final.append([pi,0,pi*(-1)])
# 两个不一样的负数,一个正数
for pj in dPz:
# 限制元组不为空
if pi >= pj:
continue
if (pi + pj)*(-1) in dFz:
final.append([pi,pj,(pi + pj)*(-1)])
# 对大于0数组遍历
for ni in dFz:
count = dFz[ni]
if count>=2 and 2*ni*(-1) in dPz:
final.append([ni,ni,2*ni*(-1)])
for nj in dFz:
if ni >= nj :
continue
if (-1)*(ni+nj) in dPz:
final.append([ni,nj,(ni + nj)*(-1)])
return final
LeetCode T15
猜你喜欢
转载自blog.csdn.net/wjl__ai__/article/details/112121796
今日推荐
周排行