packagecom.leetcode.part1;/***@author:shix
* @date :Created in 2020/1/26 14:09
* @description:两数相加
* @modified By:*/
public classAddTwoNumbers {publicListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode head= null;//返回结果
ListNode previousNode = null;//存储上一个节点
boolean flag = false;//是否进位
ListNode p1 =l1;
ListNode p2=l2;while (p1 != null && p2 != null) {int temp = p1.val + p2.val + (flag ? 1 : 0);
ListNode node;if (temp >= 10) {
node= new ListNode(temp - 10);
flag= true;
}else{
node= newListNode(temp);
flag= false;
}if (head == null && previousNode == null) {
head=node;
previousNode=node;
}else{
previousNode.next=node;
}
node.next= null;
previousNode=node;
p1=p1.next;
p2=p2.next;
}while (p1 != null) {int temp = p1.val + (flag ? 1 : 0);
ListNode node;if (temp >= 10) {
node= new ListNode(temp - 10);
flag= true;
}else{
node= newListNode(temp);
flag= false;
}
node.next= null;
previousNode.next=node;
previousNode=node;
p1=p1.next;
}while (p2 != null) {int temp = p2.val + (flag ? 1 : 0);
ListNode node;if (temp >= 10) {
node= new ListNode(temp - 10);
flag= true;
}else{
node= newListNode(temp);
flag= false;
}
node.next= null;
previousNode.next=node;
previousNode=node;
p2=p2.next;
}if (flag == true) {
ListNode node= new ListNode(1);
previousNode.next=node;
}returnhead;
}/*** 初始化ListNode
*
*@paramnum
*@return
*/
public ListNode initNode(intnum) {int temp = num % 10;
ListNode head= null;
ListNode previousNode= null;while (temp != 0) {
ListNode node= newListNode(temp);
node.next= null;if (head == null && previousNode == null) {
head=node;
previousNode=node;
}else{
previousNode.next=node;
}
num= num / 10;
temp= num % 10;
previousNode=node;
}returnhead;
}public static voidmain(String[] args) {
AddTwoNumbers add= newAddTwoNumbers();//初始化两个链表
ListNode l1 = add.initNode(342);
ListNode l2= add.initNode(465);//两数相加
ListNode result =add.addTwoNumbers(l1, l2);//打印结果
add.printResult(result);
}private voidprintResult(ListNode result) {//打印结果
System.out.print("结果:");while (result != null) {
System.out.print(result.val);if (result.next != null) {
System.out.print("->");
}
result=result.next;
}
System.out.println("");
}classListNode {intval;
ListNode next;
ListNode(intx) {
val=x;
}
}
}