亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python 兩數相加 Add Two Numbers Leetcode

系統 1932 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條評論
主站蜘蛛池模板: 久久综合九色 | 亚洲欧洲国产经精品香蕉网 | 色爱区综合激情五月综合激情 | 欧美日韩在线观看视频 | 国产精品爱啪在线线免费观看 | 成人免费动作大片黄在线 | 国产亚洲一欧美一区二区三区 | 亚洲精品一区二区三区婷婷月 | 国内精品区一区二区三 | 亚洲国产美女视频 | 99热这里只有精品在在 | 韩国一大片a毛片 | 欧美成免费 | 天天爽影院一区二区在线影院 | 亚洲欧洲一区二区三区在线 | 亚洲免费网 | 国产免费变态视频网址网站 | 99国产精品 | 国产精品视频ccav | 91国在线高清视频 | 国产一级在线免费观看 | 成人亚洲精品 | 一线视频日本 | 99视频精品 | 日日碰日日摸日日澡视频播放 | 青草青草久热精品视频在线观看 | 毛片一区二区三区 | 久久大伊人 | 国产男女猛视频在线观看网站 | 成人国产精品一级毛片视频 | 免费人成在线观看69式小视频 | 国产精品二 | 九九精品视频一区二区三区 | 久久青草免费91线频观看不卡 | 中文字幕高清免费不卡视频 | 黄页网址大全免费观看美女 | 国产一级精品毛片 | 久久精品亚洲一区二区 | 国产不卡视频在线观看 | 国产激情视频一区二区三区 | 精品中文字幕乱码一区二区 |