zoukankan      html  css  js  c++  java
  • LeetCode No.2 Add Two Numbers 20170305

    You are given two non-empty 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.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    难度:medium

    题目大意:有两个数字被倒序的保存在两个链表中,请按照正常顺序输出两个数字求和的结果。

    思路:如果两个链表都不为空,由于倒序之后,如今的最高位其实是原来的最低位,所以直接将两个链表的第一个元素与存储进位的变量carry相加,新的链表存储求和结果除以10的余数,carry等于求和结果除以10取整,保存新的进位结果。如果其中一个链表为空,则直接输出另一个链表剩余内容。如果两个链表都为空,则检查进位变量carry,如果carry不等于0,则将carry的值加入到输出链表中。

    class Solution(object):
    def addTwoNumbers(self, l1, l2):
    """
    :type l1: ListNode
    :type l2: ListNode
    :rtype: ListNode
    """
    List1=ListNode(0)
    temp=List1
    carry=0
    while l1!=None and l2!=None:
    temp.next=ListNode((l1.val+l2.val+carry)%10)
    carry=(l1.val+l2.val+carry)/10
    l1=l1.next
    l2=l2.next
    temp=temp.next
    if l1!=None:
    while l1!=None:
    temp.next=ListNode((l1.val+carry)%10)
    carry=(l1.val+carry)/10
    l1=l1.next
    temp=temp.next
    if l2!=None:
    while l2!=None:
    temp.next=ListNode((l2.val+carry)%10)
    carry=(l2.val+carry)/10
    l2=l2.next
    temp=temp.next
    if carry!=0:
    temp.next=ListNode(1)
    return List1.next

    这题考察的是链表的操作,难点应该在于如何处理某个链表变为空的情况,尤其是当两个链表同时变为空的时候,要检查进位是0还是1,如果是1的话要将进位结果加入到链表中去。

  • 相关阅读:
    工欲善其事,必先利其器
    年度总结
    人脸解锁从底层到上层(一)
    Hexo NexT 主题添加评论和文章阅读量
    摄影历程-第一章
    西藏之旅
    软件测试和评估
    WordCount优化
    WordCount编码与测试
    值得深入思考的五个问题
  • 原文地址:https://www.cnblogs.com/fangdai/p/6505668.html
Copyright © 2011-2022 走看看