[LeetCode-Java]2. Add Two Numbers
来源:互联网 发布:iphone视频制作软件 编辑:程序博客网 时间:2024/06/16 07:25
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
解:由于int大小限制,不可转化为int相加处理。对应位相加的过程中需注意末尾进位情况。
public static ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode result = l1; boolean flag = false; while(true){ //对应位相加 考虑前一位的进位flag l1.val = l1.val + l2.val + (flag?1:0); //根据相加的结果 设置进位标志 if (l1.val >= 10){ l1.val = l1.val - 10; flag = true; }else { flag = false; } if (l1.next == null || l2.next == null) break; l1 = l1.next; l2 = l2.next; } //l2长度比较长,作相应处理 if (l1.next == null && l2.next != null){ l2 = l2.next; l1.next = l2; dealWithEnd(l2,flag); } //l1的长度比较长 if (l2.next == null && l1.next != null){ l1 = l1.next; dealWithEnd(l1,flag); } //两者长度相同,需根据进位情况增加一个最高位 if (l1.next == null && l2.next == null){ if (flag) { ListNode end = new ListNode(1); l1.next = end; } } return result; } //对附带进位信息的链表进行处理 static void dealWithEnd(ListNode listNode,Boolean flag){ while (true){ listNode.val += (flag?1:0); if (listNode.val >= 10){ listNode.val = listNode.val - 10; flag = true; }else { flag = false; break; } if (listNode.next == null){ if (flag) { ListNode end = new ListNode(1); listNode.next = end; } break; } listNode = listNode.next; } }
0 0
- LeetCode(java)2. Add Two Numbers
- leetcode: 2. Add Two Numbers (java)
- [LeetCode-Java]2. Add Two Numbers
- LeetCode 2. Add Two Numbers(Java)
- [LeetCode] 2. Add Two Numbers java
- Leetcode 2. Add Two Numbers(java版)
- 2. Add Two Numbers leetcode java
- [Leetcode] Add Two Numbers (Java)
- Add Two Numbers LeetCode Java
- 【Leetcode】Add two numbers JAVA
- Leetcode Java Add Two Numbers
- Java Leetcode Add Two Numbers
- [LeetCode][Java] Add Two Numbers
- LeetCode : Add Two Numbers [java]
- leetcode:Add Two Numbers 【Java】
- Java-LeetCode-Add Two Numbers
- Add Two Numbers LeetCode Java
- [LeetCode]Add Two Numbers(Java)
- ArrayList源码详解
- XML 解析详解
- Struts2.x 学习笔记 之 类型转换器 和 错误提示修改
- Xcode7下真机配置iOS10
- asmlinkage和likely
- [LeetCode-Java]2. Add Two Numbers
- lesson1: 二次学习C——解读C语言的基本结构
- List of all MySQL commands
- [算法导论]2.2节编程练习C++实现
- python学习(2)图像处理指令解析
- 开发者所需要知道的 iOS 10 SDK 新特性
- yii 即点即改
- HTML5教程从入门到精通及网站源码
- [SCOI2012]滑雪与时间胶囊