【Leetcode】2:兩數相加(Python)

題目:node

 

 解題思路:首先對兩個鏈表進行遍歷,而後將數字轉化爲字符串加起來數組

 而後對整個字符串進行逆序,在逆序的同時賦值給新建立的鏈表

代碼以下:app

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
        #首先對兩個鏈表進行遍歷,而後將數字轉化爲字符串加起來
        #而後對整個字符串進行逆序,在逆序的同時賦值給新建立的鏈表
        
        #首先考慮爲0的狀況


        #考慮鏈表不爲0的狀況
        l1_node=[]
        l2_node=[]
        #在儲存進數組裏的時候能夠直接逆序
        while l1:
            l1_node.insert(0,str(l1.val))
            l1=l1.next

        while l2:
            l2_node.insert(0,str(l2.val))
            l2=l2.next
        #轉化爲整數進行相加
        zhengshu=''
        zhengshuer=''
        for i in l1_node:
            zhengshu=zhengshu+i
        
        for j in l2_node:
            zhengshuer=zhengshuer+j

        zhengshu=int(zhengshu)
        zhengshuer=int(zhengshuer)

        summ=str(zhengshu+zhengshuer)
        #將相加獲得的整數再次變成字符串,並分割,分別賦值給新的鏈表
        ls=[]
        for i in summ:
            ls.append(i)
        node=ListNode(0)
        pointer=node
        #這裏還要進行倒序一次
        i=len(ls)-1
        while i>=0:
            
            node.next=ListNode(int(ls[i]))
            node=node.next
            i=i-1
        
        return pointer.next

得解:
spa

 

 我這個方法還不太行,時間複雜度太大,用了四個並列的循環,以後再來想一想有沒有更好的辦法。code

相關文章
相關標籤/搜索