欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2. 两数相加

程序员文章站 2022-04-17 15:51:54
...

题目来源

leetcode

题目描述

2. 两数相加

题目解析

2. 两数相加
laiyuan

/**
 * 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) {
        ListNode result = new ListNode(-1);
        ListNode cur = result;
        int c = 0; // 进位
        while (l1 != null || l2 != null){
            int a = l1 == null ? 0 : l1.val;
            int b = l2 == null ? 0 : l2.val;
            cur.next = new ListNode((a + b + c) % 10);  // 当前节点指向下一个节点

            cur = cur.next;  // 当前节点指向最后一个节点
            c = (a + b + c) / 10;                   // 更新进位
            l1 = l1 == null ? null : l1.next;   // 更新要计算的下一个数
            l2 = l2 == null ? null : l2.next;
        }

        if (c != 0){
            cur.next = new ListNode(c);
        }


        // 非空链表,所以至少一个
        return result.next;
    }
}
相关标签: 算法与数据结构

上一篇: 2. 两数相加

下一篇: 2.两数相加