連結串列——兩數相加
阿新 • • 發佈:2019-01-03
精簡之後
class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { //設定進位位,當前結果值位,設定當前節點 int high=0; int nowvalue=0; ListNode now1=l1,now2=l2; nowvalue=now1.val+now2.val; high=nowvalue/10; nowvalue%=10; ListNode listnew=new ListNode(nowvalue),nodenow=listnew; now1=now1.next; now2=now2.next; //獲取兩個連結串列中對應項的值 while(now1!=null||now2!=null||high==1){ //判空,相加,並判斷是否超過十,超過則進位位置一,或者直接新建節點,作為新連結串列尾節點 if(now1!=null&&now2!=null){ nowvalue=now1.val+now2.val+high; now1=now1.next; now2=now2.next; }else if(now1!=null){ nowvalue=now1.val+high; now1=now1.next; }else if(now2!=null){ nowvalue=now2.val+high; now2=now2.next; }else if(high==1){ nowvalue=1; high=0; } high=nowvalue/10; nowvalue%=10; while(nodenow.next!=null)nodenow=nodenow.next; nodenow.next=new ListNode(nowvalue); } return listnew; } }
精簡之前
/** * 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) { //設定進位位,當前結果值位,設定當前節點 int high=0; int nowvalue=0; ListNode now1=l1; ListNode now2=l2; nowvalue=now1.val+now2.val; if(nowvalue>=10){ nowvalue%=10; high=1; } ListNode listnew=new ListNode(nowvalue); ListNode nodenow=listnew; now1=now1.next; now2=now2.next; //獲取兩個連結串列中對應項的值 while(now1!=null||now2!=null||high==1){ //判空,相加,並判斷是否超過十,超過則進位位置一,或者直接新建節點,作為新連結串列尾節點 if(now1!=null&&now2!=null){ nowvalue=now1.val+now2.val+high; high=0; if(nowvalue>=10){ nowvalue%=10; high=1; }else{ high=0; } now1=now1.next; now2=now2.next; }else if(now1!=null){ nowvalue=now1.val+high; high=0; if(nowvalue>=10){ high=1; nowvalue%=10; } now1=now1.next; }else if(now2!=null){ nowvalue=now2.val+high; high=0; if(nowvalue>=10){ high=1; nowvalue%=10; } now2=now2.next; }else if(high==1){ nowvalue=1; high=0; } while(nodenow.next!=null)nodenow=nodenow.next; nodenow.next=new ListNode(nowvalue); } return listnew; } }