好像有点问题,不太对
class Solution:
def threeSum(self, nums):
dir={}
r=[]
r2=[]
for k in range(0,len(nums)):
dir[k]=nums[k]
new_dir = {v : k for k, v in dir.items()}
for i in range(0,len(nums)):
for j in range (i+1,len(nums)):
complement= 0-nums[i]-nums[j]
if complement in dir.values():
if (new_dir[complement]>j ):
a=[nums[i],nums[j],complement]
a.sort()
r.append(a)
# r = sorted(set(r),key = r.index)
for l in r:
if not l in r2:
r2.append(l)
def threeSum(self, nums):
dir={}
r=[]
r2=[]
for k in range(0,len(nums)):
dir[k]=nums[k]
new_dir = {v : k for k, v in dir.items()}
for i in range(0,len(nums)):
for j in range (i+1,len(nums)):
complement= 0-nums[i]-nums[j]
if complement in dir.values():
if (new_dir[complement]>j ):
a=[nums[i],nums[j],complement]
a.sort()
r.append(a)
# r = sorted(set(r),key = r.index)
for l in r:
if not l in r2:
r2.append(l)
return r2
用的是笨办法,可以看成是暴力搜索
几个要点:
1. key值是不可重复的
用
new_dir = {v : k for k, v in dir.items()}可以把key 和value倒过来, 这样可以从value索引到key
2.
a.sort()可以把list里的值排序
如果遇上unhashable的,比如说list里面有list
for l in r:
if not l in r2:
r2.append(l)
if not l in r2:
r2.append(l)
这样写测试的时候没问题但是提交的时候时间超过限制,可能是我写的复杂度太高了,等以后水平上来了再来修改。