LeetCode Hot 100 --- 两数相加(java)

Posted 小样5411

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode Hot 100 --- 两数相加(java)相关的知识,希望对你有一定的参考价值。

题目

代码

这题与之前写过的牛客Top200—链表相加,十分相似,只不过一个往右进位,一个往左进位,往左进位是我们正常算数的规则,往左的链表相加需要先反转链表,而题中说明是往右进位,所以这个不用反转
最优解

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        int carry = 0;
        ListNode head = new ListNode(-1);//头结点
        ListNode cur = head;
        while(l1 != null || l2 != null){
            //两个链表的结点值,如果长度不一致相加就补零
            int num1 = (l1 == null) ? 0 : l1.val;
            int num2 = (l2 == null) ? 0 : l2.val;
            int sum = num1 + num2 + carry;
            carry = sum / 10; //更新进位
            ListNode node = new ListNode(sum % 10);
            cur.next = node;
            cur = cur.next;
            //l1、l2均后移
            if(l1 != null){
                l1 = l1.next;
            }
            if(l2 != null){
                l2 = l2.next;
            }
        }
        //最后一位相加后,若carry进位不为0,则还需要进位
        if(carry != 0){
            ListNode node = new ListNode(carry);
            cur.next = node;
        }
        return head.next;
    }
}

以上是关于LeetCode Hot 100 --- 两数相加(java)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 热题 HOT 1002. 两数相加

LeetCode Hot 100 --- 两数之和(java)

LeetCode HOT 100

Leetcode刷题100天—2. 两数相加( 链表)—day60

Leetcode刷题100天—2. 两数相加( 链表)—day60

LeetCode 面试必备100题:Add Two Numbers 两数相加