本文共 1173 字,大约阅读时间需要 3 分钟。
/** * 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) { //因为链表是逆序的 不好加 所以用栈保存 Stackstack1 = new Stack<>(); Stack stack2 = new Stack<>(); while(l1 != null) { stack1.push(l1.val); l1 = l1.next; } while(l2 != null) { stack2.push(l2.val); l2 = l2.next; } int carry = 0; ListNode node = null; int sum = 0; //只要栈里面有数字 而且有进位就要加进去 加的都是上一次的进位 while(!stack1.isEmpty() || !stack2.isEmpty() || carry != 0) { int a = stack1.isEmpty()? 0 : stack1.pop(); int b = stack2.isEmpty()? 0 : stack2.pop(); sum = a + b + carry; //计算这一次的进位 加到下一次 carry = sum / 10; sum = sum % 10; ListNode cur = new ListNode(sum); //node用来保存前一个节点 cur.next = node;//cur插到前一个节点左边 //把node往左移 node = cur; } return node; }}
转载地址:http://vlhzi.baihongyu.com/