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.next
3.