1.
class Solution(object): def twoSum(self,nums,target): nums_index=[(value,index) for (index,value) in enumerate(nums)] nums_index.sort() begin=0 end=len(nums)-1 while(begin<end): sum=nums_index[begin][0]+nums_index[end][0] if sum==target: return [nums_index[begin][1],nums_index[end][1]] elif sum<target: begin+=1 else: end-=1 if __name__=='__main__': s=Solution() print(s.twoSum([2,3,5,6,5,6,7,8,0,8,6,43,2,2,3,],4))
2.
class ListNode(object): def __init__(self,x): self.val=x self.next=None class Solution(object): def addtwoNumbers(self,l1,l2): #无需做非空判断,题意表明非空链表 #进位值,记录是否需要增加新节点,或在链表下一个节点是否需要+1,同时记录链表同级节点的和 carry=0 #这里执行的顺序是curr=listnode(0),head=curr,head为头结点 head=curr=ListNode(0) #判断l1,l2,carry是否有值,carry有值的话需要增加新节点,或在链表下一个节点需要+1; while l1 or l2: val = carry #若有进位则加入val中 #判断l1是否有值 if l1: val+=l1.val #将l1的值加入val l1=l1.next#转移到下一位 # 判断l2是否有值 if l2: val+=l2.val#将l2对应的值加入val l2=l2.next#转移到下一位 curr.next=ListNode(val % 10) #当前位为val的值除以十的余数 curr = curr.next #进到curr下一位 carry=val/10 #若需要进位,则把进位值赋给carry if carry>0: curr.next=ListNode(carry) return head.next3.