zoukankan      html  css  js  c++  java
  • 链表表示的2个数相加

    问题描述

    You are given two linked-lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    Example:
    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8
    Explanation: 342 + 465 = 807.

    分析

    从左至右同步遍历2个链表,依次相加每一位的数字,注意处理进位的情况即可。

    时间复杂度为 O(n).

    代码

    # Definition for singly-linked list.
    class ListNode(object):
      def __init__(self, x):
        self.val = x
        self.next = None
    
    class Solution:
      def addTwoNumbers(self, l1, l2, c = 0):
        # Fill this in.
        result = ListNode(0)
        p = result
        
        addToNextPos = 0
    
        while True:
            r = 0
            if l1:
                r += l1.val
                l1 = l1.next
            if l2:
                r += l2.val
                l2 = l2.next
            r += addToNextPos
            if r >= 10:
                p.val = r - 10
                addToNextPos = 1
            else:
                p.val = r
                addToNextPos = 0
            
            if l1 or l2:
                p.next = ListNode(0)
                p = p.next
            else:
                break
        
        return result
    
    l1 = ListNode(2)
    l1.next = ListNode(4)
    l1.next.next = ListNode(3)
    
    l2 = ListNode(5)
    l2.next = ListNode(6)
    l2.next.next = ListNode(4)
    
    result = Solution().addTwoNumbers(l1, l2)
    while result:
      print result.val,
      result = result.next
    # 7 0 8
    
  • 相关阅读:
    如何学习linux编程
    SharpMap学习9调侃WebGIS
    蛮力法01
    SharpMap学习10比例尺
    蛮力法03
    系统学习Linux11点建议
    蛮力算法02
    大地坐标系
    Windows 7下删除右键新建菜单项的多余选项
    GIS中的坐标系相关概念
  • 原文地址:https://www.cnblogs.com/new-start/p/11633316.html
Copyright © 2011-2022 走看看