LeetCode 445. Add Two Numbers II--两个链表均按照由尾部到头部计算两个结点数值之和,保持进位
来源:互联网 发布:有声广告制作软件 编辑:程序博客网 时间:2024/06/05 15:36
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 number 0 itself.Follow up:What if you cannot modify the input lists? In other words, reversing the lists is not allowed.Example:Input: (6 -> 2 -> 4 -> 3) + (5 -> 9 -> 4)Output: 6 -> 8 -> 3 -> 7
import java.util.Stack;class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}public class Main { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { Stack<Integer> s1 = new Stack<Integer>(); Stack<Integer> s2 = new Stack<Integer>(); while (l1 != null) { s1.push(l1.val); l1 = l1.next; } while (l2 != null) { s2.push(l2.val); l2 = l2.next; } int sum = 0; ListNode cur = new ListNode(0); while (!s1.empty() || !s2.empty()) { if (!s1.empty()) sum += s1.pop(); if (!s2.empty()) sum += s2.pop(); cur.val = sum % 10; //为啥是“sum/10”,比如输出的[5],[5],输出应该是[1,0];如果是new ListNode(0)则输出是[0],则错误 ListNode head = new ListNode(sum/10);//先赋值为sum/10,后面cur.val = sum % 10;会赋值 head.next = cur;//新的结点的next指针指向原有的链表头指针 cur = head;//当前指针指向头指针,表示cur指向链表头部 sum /= 10;//用来进位 } return cur.val == 0 ? cur.next : cur; }//addTwoNumbers public static void main(String[] args) {// Input: (6 -> 2 -> 4 -> 3) + (5 -> 9 -> 4)// Output: 6 -> 8 -> 3 -> 7 ListNode A = new ListNode(6); A.next = new ListNode(2); A.next.next = new ListNode(4); A.next.next.next = new ListNode(3); ListNode B = new ListNode(5); B.next = new ListNode(9); B.next.next = new ListNode(4); Main main = new Main(); ListNode C = main.addTwoNumbers(A, B); System.out.println(C); }}
1563 / 1563 test cases passed.
Status: Accepted
Runtime: 63 ms
Your runtime beats 46.11 % of java submissions.
T(n) = O(n)
阅读全文
0 0
- LeetCode 445. Add Two Numbers II--两个链表均按照由尾部到头部计算两个结点数值之和,保持进位
- LeetCode Add Two Numbers两个链表数值相加
- LeetCode 2. Add Two Numbers -- 两个链表按序从头到尾相加,记录进位
- 445. Add Two Numbers II 两个数字相加 2
- leetcode Add Two Numbers 两个数相加
- LeetCode 445. Add Two Numbers II
- leetcode-445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- [LeetCode]445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- 【LeetCode】 445. Add Two Numbers II
- LeetCode笔记:445. Add Two Numbers II
- leetcode 445. Add Two Numbers II
- 【Leetcode】445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- LeetCode 445. Add Two Numbers II
- Leetcode-445. Add Two Numbers II
- 如何升级到python3版本并且安装pip3
- HDU 2629
- 算法竞赛入门
- 用R数据处理
- javaWeb用户权限控制简单实现
- LeetCode 445. Add Two Numbers II--两个链表均按照由尾部到头部计算两个结点数值之和,保持进位
- 网页搜索框
- 水仙花数
- POJ
- 1284 2 3 5 7的倍数 容斥原理
- C
- spring和mybatis的整合
- 油滴扩散
- Java实现队列和栈