1. 程式人生 > >每日一題--LeetCode 2(兩數相加)java

每日一題--LeetCode 2(兩數相加)java

題目描述:

程式碼如下:

/**
 * 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 ret=new ListNode(0);
        //記錄返回連結串列的頭結點
        ListNode head=ret;
        int cur=0;
        do{
            //計算位數之和
            int num=(l1!=null?l1.val:0)+(l2!=null?l2.val:0)+cur;
            //計算餘數
            int digit=num%10;
            //計算進位
            cur=num/10;
            ret.val=digit;
            l1=l1!=null?l1.next:l1;
            l2=l2!=null?l2.next:l2;
            //判斷是否需要新增新節點
            if(l1!=null||l2!=null||cur!=0){
                ret.next=new ListNode(0);
                ret=ret.next;
            }
        //當兩個連結串列不為空或者還存在進位時,迴圈繼續
        }while(l1!=null||l2!=null||cur!=0);
        //返回頭結點
        return head;
    }
}