#Leetcode#LongWay2Go

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.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章