classSolution(object):deftwoSum(self, nums, target):
leng=len(nums)for i inrange(leng):for j inrange(leng):if nums[i]+nums[j]==target and i!=j:return[i,j]
在b站up那里学到的【然后自己复写】
忘记怎么取list的第二个值了。【利用range的特性】
classSolution(object):deftwoSum(self, nums, target):
leng=len(nums)for i inrange(0,leng):for j inrange(i+1,leng):if nums[i]+nums[j]==target and i!=j:return[i,j]
哈希表【空间换时间】
classSolution(object):deftwoSum(self, nums, target):
mapping ={}for i inrange(0,len(nums)):
mapping[nums[i]]= i
for j inrange(0,len(nums)):
diff = target - nums[j]if(diff in mapping and mapping[diff]!= j):return[j,mapping[diff]];
和为 K 的子数组
在b站up那里学到的【然后自己复写】
classSolution(object):defsubarraySum(self, nums, k):
count =0
dic={}
dic[0]=1
cur_sum =0for num in nums:
cur_sum = cur_sum + num
if cur_sum-k in dic:# 很巧的思路
count=count+dic[cur_sum-k]if cur_sum in dic:
dic[cur_sum]+=1else:
dic[cur_sum]=1return count
三数之和
在b站up那里学到的【然后自己复写】
classSolution(object):defthreeSum(self, nums):
resol=[]
nums.sort()for i inrange(len(nums)):
cur = i
if nums[cur]>0:return resol
if cur>0and nums[cur-1]== nums[cur]:continue# 去重
left = cur+1
right =len(nums)-1while left<right:
total = nums[cur]+nums[left]+nums[right]if total >0:
right-=1elif total<0:
left+=1else:
resol.append([nums[cur],nums[left],nums[right]])while left<right and nums[right-1]==nums[right]:# 去重
right-=1while left<right and nums[left+1]==nums[left]:# 去重
left+=1
right-=1
left+=1return resol
两数相加【链表】
我的半路答案:没有看到是链表
我还没有写完,只是想半路测一下是否正确。
关于链表的话,我相对还是弱一点,下次巩固。
classSolution(object):defaddTwoNumbers(self, l1, l2):
resl=[]
cur=0
len1=len(l1)
len2=len(l2)for i inrange(min(len1,len2)):
total=l1[i]+l2[i]+cur
if total>10:
cur=total/10
resl.append(total%10)else:
resl.append(total)return resl
在b站up那里学到的【复写失败后整理】
classSolution(object):defaddTwoNumbers(self, l1, l2):
total =0
next1 =0
dummy = ListNode()
cur = dummy#############必须得要一个临时变量,因为后面输出是从头开始输出while(l1 !=Noneand l2 !=None):
total = l1.val + l2.val + next1
cur.next= ListNode(total %10)
next1 = total //10
cur = cur.next##################不要忘记
l1 = l1.next
l2 = l2.nextwhile l1 !=None:
total = l1.val + next1
cur.next= ListNode(total %10)
next1 = total //10
cur = cur.next##################不要忘记
l1 = l1.nextwhile l2 !=None:
total = l2.val + next1
cur.next= ListNode(total %10)
next1 = total //10
cur = cur.next##################不要忘记
l2 = l2.nextif next1 !=0:
cur.next= ListNode(next1)return dummy.next