兩個連結串列相加的和445. Add Two Numbers II
阿新 • • 發佈:2019-01-10
題目:
You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
You may assume the two numbers do not contain any leading zero, except the
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { /* 解題思路:將連結串列存入集合中,然後相加即可,定義一個變數flage記錄進位 */ public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result=new ListNode(0);//頭結點 LinkedList<Integer> list1=new LinkedList<Integer>(); LinkedList<Integer> list2=new LinkedList<Integer>(); while(l1!=null){ list1.add(l1.val); l1=l1.next; }//while while(l2!=null){ list2.add(l2.val); l2=l2.next; }//while int flage=0; //頭插法建立連結串列,集合是先進後出的方式 while(list1.size()!=0&&list2.size()!=0){ int num=list1.removeLast()+list2.removeLast()+flage; flage=num/10; num=num%10; ListNode temp=new ListNode(num); temp.next=result.next; result.next=temp; }//while while(list1.size()!=0){ int num=list1.removeLast()+flage; flage=num/10; num=num%10; ListNode temp=new ListNode(num); temp.next=result.next; result.next=temp; } while(list2.size()!=0){ int num=list2.removeLast()+flage; flage=num/10; num=num%10; ListNode temp=new ListNode(num); temp.next=result.next; result.next=temp; } //考慮進位的時候,兩個集合均為空的情況,例如{5} {5}相加之後需要進位1 if(flage!=0){ ListNode temp=new ListNode(flage); temp.next=result.next; result.next=temp; } return result.next; } }