LeetCode--Add Two Numbers
題目見:https://leetcode.com/problems/add-two-numbers/
You are given two?non-empty?linked lists representing two non-negative integers. The digits are stored in?reverse order?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.
Example:
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4) Output: 7 -> 0 -> 8 Explanation: 342 + 465 = 807.這道題簡單講就是輸入兩個鏈表,將其逆序排列成數字后相加,并將結果逆序排列成鏈表輸出
我的想法是:
代碼見:https://github.com/Wen-Xueliang/LeetCode/blob/master/src/main/java/eng/lab/leetcode/algorithms/TwoSum.java
時間與空間使用信息
Runtime:?4 ms, faster than?8.40%?of?Java?online submissions for?Add Two Numbers.
Memory Usage:?45 MB, less than?84.01%?of?Java?online submissions for?Add Two Numbers.
public class AddTwoNumbers {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode result = null;ListNode currentNode1 = l1;ListNode currentNode2 = l2;List<Integer> list = new ArrayList<Integer>();int carry = 0;while(true) {int node1Value = 0;int node2Value = 0;if(currentNode1 == null && currentNode2 == null) {if(carry == 1) list.add(carry);break;} else if(currentNode1 == null){node2Value = currentNode2.val;currentNode2 = currentNode2.next;} else if(currentNode2 == null){node1Value = currentNode1.val;currentNode1 = currentNode1.next;} else {node1Value = currentNode1.val;node2Value = currentNode2.val;currentNode1 = currentNode1.next;currentNode2 = currentNode2.next;}int sum = node1Value + node2Value + carry;if(sum > 9) {carry = 1;sum -= 10;} else {carry = 0;}list.add(sum);}for(int i = list.size() - 1; i >= 0; i --) {ListNode currentNode = null;if(result == null) {result = new ListNode(list.get(i));} else {currentNode = new ListNode(list.get(i));currentNode.next = result;result = currentNode;}}return result;}public static class ListNode {int val;ListNode next;ListNode(int x) { val = x; }} }總結
以上是生活随笔為你收集整理的LeetCode--Add Two Numbers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java JDBC篇4——数据库连接池
- 下一篇: 英语语法---数词详解