日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python 兩數相加 Add Two Numbers Leetcode

系統 1939 0

Python 兩數相加 Leetcode No.2

Python 兩數相加 Add Two Numbers Leetcode No.2_第1張圖片
思路很簡單,模擬小學加法運算就好了,因為是逆序的,頭指針指向的那個其實就是個位,往后加就完事,但是唯一需要注意的是,最高位可能有進位。(屬于代碼練習題)
ps:還有人說先把數全部取出來,用計算機加法算完,再建立鏈表連接起來,乍一看有點投機取巧好像可行的樣子,但是我們要考慮計算和的時候會溢出。
還有人考慮直接在原來的鏈表上改數字,多一位的話,就再加一個鏈表,首先不知道leetcode允不允許改數字,畢竟這種題目也是考察你的鏈表能力,其次就算可以改,也沒那個必要,畢竟就算少個幾百個節點,問題也不大就是了。

            
              
                # Definition for singly-linked list.
              
              
                # class ListNode(object):
              
              
                #     def __init__(self, x):
              
              
                #         self.val = x
              
              
                #         self.next = None
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                addTwoNumbers
              
              
                (
              
              self
              
                ,
              
               l1
              
                ,
              
               l2
              
                )
              
              
                :
              
              
                """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
              
              
                #進位
              
              
        add 
              
                =
              
              
                0
              
              
                #這是兩個頭節點
              
              
        l3 
              
                =
              
               l4 
              
                =
              
               ListNode
              
                (
              
              
                0
              
              
                )
              
              
                while
              
              
                True
              
              
                :
              
              
                #算節點的和  
              
              
                if
              
               l1 
              
                or
              
               l2
              
                :
              
              
                if
              
               l1
              
                :
              
              
                sum
              
              
                =
              
              l1
              
                .
              
              val 
              
                +
              
               add
                    
              
                if
              
               l2
              
                :
              
              
                sum
              
              
                +=
              
               l2
              
                .
              
              val
                
              
                elif
              
               l2
              
                :
              
              
                sum
              
              
                =
              
               l2
              
                .
              
              val 
              
                +
              
              add
                    
              
                if
              
               l1
              
                :
              
              
                sum
              
              
                +=
              
              l1
              
                .
              
              val
            
              
                else
              
              
                :
              
              
                sum
              
              
                =
              
               add
            add 
              
                =
              
              
                0
              
              
                #判斷是否給add賦值
              
              
                if
              
              
                sum
              
              
                //
              
              
                10
              
              
                >
              
              
                0
              
              
                :
              
              
                add 
              
                =
              
              
                1
              
              
                sum
              
              
                %=
              
              
                10
              
              
                #為新節點賦值
              
              
            l3
              
                .
              
              val 
              
                =
              
              
                sum
              
              
            
            l1 
              
                =
              
               l1
              
                .
              
              
                next
              
              
                if
              
               l1 
              
                else
              
               l1
            l2 
              
                =
              
               l2
              
                .
              
              
                next
              
              
                if
              
               l2 
              
                else
              
               l2
            
              
                #創建新的鏈表
              
              
                if
              
               l1 
              
                or
              
               l2 
              
                or
              
               add
              
                :
              
              
                l3
              
                .
              
              
                next
              
              
                =
              
               ListNode
              
                (
              
              
                0
              
              
                )
              
              
                l3 
              
                =
              
               l3
              
                .
              
              
                next
              
              
                else
              
              
                :
              
              
                break
              
              
                return
              
               l4

            
          

ps:分享很多國外人寫的代碼,就感覺臥槽,還可以這么寫,思路大家都一樣,寫法會有很多不同哦

            
              
                #第一個老外寫的,用了str
              
              
                class
              
              
                Solution
              
              
                :
              
              
                def
              
              
                addTwoNumbers
              
              
                (
              
              self
              
                ,
              
               l1
              
                ,
              
               l2
              
                )
              
              
                :
              
              
                """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
              
              
        str_l1
              
                ,
              
               str_l2 
              
                =
              
              
                ''
              
              
                ,
              
              
                ''
              
              
                while
              
               l1
              
                :
              
                          
            str_l1 
              
                +=
              
              
                str
              
              
                (
              
              l1
              
                .
              
              val
              
                )
              
              
            l1 
              
                =
              
               l1
              
                .
              
              
                next
              
              
                while
              
               l2
              
                :
              
                          
            str_l2 
              
                +=
              
              
                str
              
              
                (
              
              l2
              
                .
              
              val
              
                )
              
              
            l2 
              
                =
              
               l2
              
                .
              
              
                next
              
              
        int_l1 
              
                =
              
              
                int
              
              
                (
              
              str_l1
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                )
              
              
        int_l2 
              
                =
              
              
                int
              
              
                (
              
              str_l2
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                )
              
              
                return
              
              
                list
              
              
                (
              
              
                map
              
              
                (
              
              
                int
              
              
                ,
              
              
                str
              
              
                (
              
              int_l1 
              
                +
              
               int_l2
              
                )
              
              
                [
              
              
                :
              
              
                :
              
              
                -
              
              
                1
              
              
                ]
              
              
                )
              
              
                )
              
            
          
            
              
                #第二個老外寫的,用了divmod,有點意思哈
              
              
                # Definition for singly-linked list.
              
              
                # class ListNode(object):
              
              
                #     def __init__(self, x):
              
              
                #         self.val = x
              
              
                #         self.next = None
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                addTwoNumbers
              
              
                (
              
              self
              
                ,
              
               l1
              
                ,
              
               l2
              
                )
              
              
                :
              
              
                """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
              
              
        result 
              
                =
              
               ListNode
              
                (
              
              
                0
              
              
                )
              
              
        result_tail 
              
                =
              
               result
        carry 
              
                =
              
              
                0
              
              
                while
              
               l1 
              
                or
              
               l2 
              
                or
              
               carry
              
                :
              
                          
            val1  
              
                =
              
              
                (
              
              l1
              
                .
              
              val 
              
                if
              
               l1 
              
                else
              
              
                0
              
              
                )
              
              
            val2  
              
                =
              
              
                (
              
              l2
              
                .
              
              val 
              
                if
              
               l2 
              
                else
              
              
                0
              
              
                )
              
              
            carry
              
                ,
              
               out 
              
                =
              
              
                divmod
              
              
                (
              
              val1
              
                +
              
              val2 
              
                +
              
               carry
              
                ,
              
              
                10
              
              
                )
              
                  
                      
            result_tail
              
                .
              
              
                next
              
              
                =
              
               ListNode
              
                (
              
              out
              
                )
              
              
            result_tail 
              
                =
              
               result_tail
              
                .
              
              
                next
              
                                    
            
            l1 
              
                =
              
              
                (
              
              l1
              
                .
              
              
                next
              
              
                if
              
               l1 
              
                else
              
              
                None
              
              
                )
              
              
            l2 
              
                =
              
              
                (
              
              l2
              
                .
              
              
                next
              
              
                if
              
               l2 
              
                else
              
              
                None
              
              
                )
              
              
                return
              
               result
              
                .
              
              
                next
              
            
          
            
              
                #第三個老外用了遞歸寫的,可以看看
              
              
                # Definition for singly-linked list.
              
              
                class
              
              
                ListNode
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                __init__
              
              
                (
              
              self
              
                ,
              
               x
              
                )
              
              
                :
              
              
        self
              
                .
              
              val 
              
                =
              
               x
        self
              
                .
              
              
                next
              
              
                =
              
              
                None
              
              
                def
              
              
                printList
              
              
                (
              
              nodeStart
              
                )
              
              
                :
              
              
                print
              
              
                (
              
              nodeStart
              
                .
              
              val
              
                )
              
              
                if
              
               nodeStart
              
                .
              
              
                next
              
              
                ==
              
              
                None
              
              
                :
              
              
                return
              
              
                else
              
              
                :
              
              
        printList
              
                (
              
              nodeStart
              
                .
              
              
                next
              
              
                )
              
              
                class
              
              
                Solution
              
              
                (
              
              
                object
              
              
                )
              
              
                :
              
              
                def
              
              
                addTwoNumbers
              
              
                (
              
              self
              
                ,
              
               l1
              
                ,
              
               l2
              
                )
              
              
                :
              
              
                if
              
               l1 
              
                ==
              
              
                None
              
              
                :
              
              
                return
              
               l2
            
        
              
                if
              
               l2 
              
                ==
              
              
                None
              
              
                :
              
              
                return
              
               l1
            
        sval 
              
                =
              
               l1
              
                .
              
              val 
              
                +
              
               l2
              
                .
              
              val
        
              
                if
              
               sval 
              
                <
              
              
                10
              
              
                :
              
              
            ansNode 
              
                =
              
               ListNode
              
                (
              
              sval
              
                )
              
              
            ansNode
              
                .
              
              
                next
              
              
                =
              
               self
              
                .
              
              addTwoNumbers
              
                (
              
              l1
              
                .
              
              
                next
              
              
                ,
              
               l2
              
                .
              
              
                next
              
              
                )
              
              
                return
              
               ansNode
        
              
                else
              
              
                :
              
              
            rval 
              
                =
              
               l1
              
                .
              
              val 
              
                +
              
               l2
              
                .
              
              val
              
                -
              
              
                10
              
              
            ansNode 
              
                =
              
               ListNode
              
                (
              
              rval
              
                )
              
              
            ansNode
              
                .
              
              
                next
              
              
                =
              
               self
              
                .
              
              addTwoNumbers
              
                (
              
              ListNode
              
                (
              
              
                1
              
              
                )
              
              
                ,
              
               self
              
                .
              
              addTwoNumbers
              
                (
              
              l1
              
                .
              
              
                next
              
              
                ,
              
               l2
              
                .
              
              
                next
              
              
                )
              
              
                )
              
              
                return
              
               ansNode


            
          

更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 天镇县| 手机| 大竹县| 上栗县| 东乌| 家居| 丰县| 崇礼县| 榆社县| 托克逊县| 兴隆县| 清涧县| 墨脱县| 辛集市| 乐昌市| 象州县| 公主岭市| 甘德县| 富阳市| 云阳县| 玉田县| 河南省| 北海市| 古浪县| 临朐县| 南靖县| 巴南区| 贡觉县| 万载县| 固始县| 天峨县| 东安县| 肇庆市| 保靖县| 珠海市| 宜丰县| 墨玉县| 十堰市| 舞阳县| 静海县| 兰考县|