LeetCode、2-Add two numbers
来源:互联网 发布:万方数据库论文查询 编辑:程序博客网 时间:2024/05/03 13:19
考察的链表,当时学的时候对指针还不太懂,现在看起来这么理所当然。
这个题注意RE,我代码注释里有写。
package com;import java.util.ArrayList;import java.util.List;/** * Created by hms on 2016/12/23. */public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ArrayList<Integer> a1 = new ArrayList<>(); ArrayList<Integer> a2 = new ArrayList<>(); ArrayList<Integer> a3 = new ArrayList<>(); ArrayList<Integer> a4 = new ArrayList<>(); while (true){ int x = l1.val; a1.add(x); l1 = l1.next; if(l1 == null){ break; } } while(true){ int x = l2.val; a2.add(x); l2 = l2.next; if(l2 == null){ break; } } int as = a1.size(); int bs = a2.size(); for(int i = as-1; i >= 0; --i){ a3.add(a1.get(i)); } for(int i = bs-1; i >= 0; --i){ a4.add(a2.get(i)); } ArrayList<Integer> res = new ArrayList<>(); int m = a3.size(); int n = a4.size(); int i = m-1; int j = n-1; int add = 0; while (true){ int a = (i >= 0 ? a3.get(i) : 0); int b = (j >= 0 ? a4.get(j) : 0); if(a + b + add < 10){ res.add(a+b + add); add = 0; }else{ res.add(a+b+add - 10); add = 1; } if(i == -1) i = -1; else --i; if(j == -1) j = -1; else --j; if(i == -1 && j == -1) break; } if(add == 1){ res.add(1); } int k = res.size(); ListNode listNode = new ListNode(0); listNode.next = null; //少了这句RE ListNode node = listNode; for(int q = 0; q < k; ++q){ if(q == 0) listNode.val = res.get(q); else { ListNode newl = new ListNode(res.get(q)); node.next = newl; node = node.next; } } return listNode; } public static void main(String[] args) { Solution solution = new Solution(); ListNode l1 = new ListNode(2); ListNode l2 = new ListNode(4); ListNode l3 = new ListNode(3); l1.next = l2; l2.next = l3; ListNode l4 = new ListNode(5); ListNode l5 = new ListNode(6); ListNode l6 = new ListNode(4); l4.next = l5; l5.next = l6; ListNode listNode = solution.addTwoNumbers(l1, l4); while(true){ if(listNode == null){ break; }else{ System.out.println(listNode.val); listNode = listNode.next; } } }}class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}
0 0
- LeetCode 2 - Add Two Numbers
- LeetCode 2: Add Two Numbers
- Leetcode: Add Two Numbers (2)
- [leetcode 2] Add Two Numbers
- [Leetcode] 2 - Add Two Numbers
- LeetCode 2:《Add Two Numbers》
- LeetCode | #2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [Leetcode]2Add Two Numbers
- leetcode #2 Add Two Numbers
- leetcode-2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- [leetcode] #2 Add Two Numbers
- LeetCode-2 Add Two Numbers
- LeetCode-2-Add Two Numbers
- Leetcode[2] Add Two Numbers
- LeetCode 2 Add Two Numbers
- LeetCode 2 Add Two Numbers
- Linux - atime,mtime,ctime以及用touch指令来进行修改
- API设计思路
- ubuntu16.04部署Ganglia
- C++ && GDI+ 保存不了截图 ,Win32Error(7)
- C++程序员面试指南第8章
- LeetCode、2-Add two numbers
- 写爬微信投票结果遇到的正则的一个疏忽
- 如何在DOS窗口中显示UTF-8字符
- 盒子的浮动:float属性
- 4K视频编码:H.264、H.265、VP9谁主沉浮
- 数据库知识整理1
- 【Java基础】变长参数、Object[]类别、System.out.println异常
- C++程序员面试指南第9章
- POJ 2749 Building roads 已翻译