LeetCode(2)--Add Two Numbers
来源:互联网 发布:powershell linux 编辑:程序博客网 时间:2024/05/21 11:16
题目如下:
You are given two linked lists representing two non-negative numbers. 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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
解题思路:这里实现的代码比较繁琐,使用了二表合并的思想,先对两个表等长的部分加和,然后再对较长的表进行操作。
提交代码:
public ListNode addTwoNumbers(ListNode l1, ListNode l2) { if(l1 == null || l2 == null){ System.err.println("list node is null!"); return null; } int flag = 0; // 标识,是否进位 ListNode node = null; // 操作表 int value1 = l1.val; int value2 = l2.val; int value = value2 + value1; //对两个表同位的数求和 if(value < 10){ node = new ListNode(value); }else{ node = new ListNode(value - 10); flag = 1; } ListNode head = node; //表头,需要返回的表 while(true){ // 对两表同位的数进行操作 if(l1.next == null || l2.next == null){ break; } l1 = l1.next; l2 = l2.next; value1 = l1.val; value2 = l2.val; if(flag == 0){ value = value1 + value2; }else{ value = value1 + value2 + 1; } if(value < 10){ node.next = new ListNode(value); flag = 0; }else{ node.next = new ListNode(value - 10); flag = 1; } node = node.next; } while(l1.next != null){ //如果l1较长 l1 = l1.next; if(flag == 1){ if(l1.val + 1 < 10){ node.next = new ListNode(l1.val + 1); flag = 0; }else{ node.next = new ListNode(l1.val + 1 - 10); flag = 1; } }else{ node.next = new ListNode(l1.val); } node = node.next; } while(l2.next != null){ //如果l2较长 l2 = l2.next; if(flag == 1){ if(l2.val + 1 < 10){ node.next = new ListNode(l2.val + 1); flag = 0; }else{ node.next = new ListNode(l2.val + 1 - 10); flag = 1; } }else{ node.next = new ListNode(l2.val); } node = node.next; } if(flag == 1){ //如果有进位,补上最高位 node.next = new ListNode(1); node = node.next; } node.next = null; return head; }
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
- SSH网上商城
- 使用百度地图API
- php缓存技术详细介绍及php缓存的实现代码
- OpenCV 学习(Hough 变换提取直线)
- 输入输出重定向,迭代器绑定cin
- LeetCode(2)--Add Two Numbers
- “南大软院大神养成计划“_第十四天的学习“
- 2.0 Linux系统的安装之Fedora安装单系统(2)
- 工业的4.0时代
- C++内存管理
- 递归与尾递归
- IMAGE INPAINTING
- lds 脚本分析备忘
- 数据结构基础7.1:简单排序(冒泡、选择、插入)