Leetcode刷题每日一题----2.两数相加

    科技2022-07-13  133

    文章目录

    两数相加1.题目链接https://leetcode-cn.com/problems/add-two-numbers/2.题目描述:3.思路及代码

    两数相加

    1.题目链接https://leetcode-cn.com/problems/add-two-numbers/

    2.题目描述:

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。

    如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。

    您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    示例: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 465 = 807

    3.思路及代码

    利用一个carry进位,来解决进位情况 class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //存放答案链表 ListNode root = new ListNode(0); ListNode cursor = root; //进位 int carry = 0; while(l1 != null || l2 != null || carry != 0){ //这里为了判断l1和l2的长度不一致时,要补0 int l1val = l1 != null ? l1.val : 0; int l2val = l2 != null ? l2.val : 0; //相加 int sum = l1val + l2val + carry; //判断是否有进位,两种写法都可以 //carry = sum > 9 ? 1 : 0; carry = sum / 10; //用答案链表指向对的答案即可 ListNode sumNode = new ListNode(sum % 10); cursor.next = sumNode; cursor = sumNode; //判空,继续往下走 if(l1 != null){ l1 = l1.next; } if(l2 != null){ l2 = l2.next; } } //返回即可 return root.next; } }
    Processed: 0.011, SQL: 8