leetcode3:两数相加

    科技2022-07-13  131

    两数相加

    1 代码(Java)

    题目: 给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。

    知识点:

    链表:创建、修改(头和尾)

    思路:

    由于是逆序存储,所以直接可以计算。注意进位carry。

    1 代码(Java)

    /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode head=null,tail=null; int carry = 0; while(l1!=null || l2!=null){ int n1 = l1==null? 0:l1.val; int n2 = l2==null? 0:l2.val; int sum = n1 + n2 + carry; if(head==null){ head = tail = new ListNode(sum%10); }else{ tail.next = new ListNode(sum%10); tail = tail.next; } carry = sum/10; if(l1!=null){ l1=l1.next; } if(l2!=null){ l2=l2.next; } } if (carry!=0){ tail.next = new ListNode(carry); } return head; } }
    Processed: 0.014, SQL: 8