首页 > 其他 > 详细

2. Add Two Numbers

时间:2018-07-23 10:23:43      阅读:125      评论:0      收藏:0      [点我收藏+]

一、题目

  1、审题:

  技术分享图片

  2、题意:

  两个非空链表,加法运算,有进位的

 

二、解答:

  1、分析:

  用 while 循环进行判断,同时用标志 sign 记录每一次进位。注意两个链表可能不等长。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int sign = 0, sum = 0;
        ListNode result = new ListNode(0);  // 头结点
        ListNode head = result;
        while(l1 != null && l2 != null) {
            sum = l1.val + l2.val + sign;
            sign = sum / 10;
            result.next = new ListNode(sum%10);
            result = result.next;
            l1 = l1.next;
            l2 = l2.next;
        }

        while(l1 != null) {
            sum = l1.val + sign;
            sign = sum / 10;
            result.next = new ListNode(sum%10);
            result = result.next;
            l1 = l1.next;
        }
        while(l2 != null) {
            sum = l2.val + sign;
            sign = sum / 10;
            result.next = new ListNode(sum%10);
            result = result.next;
            l2 = l2.next;
        }
        if(sign > 0)  // 最后可能有进位
            result.next = new ListNode(sign);
        return head.next;
    }
}

 

2. Add Two Numbers

原文:https://www.cnblogs.com/skillking/p/9352885.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!