[Amazon] Add Two Numbers I(II)
来源:互联网 发布:丝绸之路发展历程 知乎 编辑:程序博客网 时间:2024/06/01 08:02
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.
Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
Output: 7 -> 0 -> 8
思路:本质上还是ListNode的题,但是又加上两数相加,需要考虑借位,所以是interview好题
"模10除10"
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { if(l1==null || l2==null){ return null; } ListNode dummy=new ListNode(-1); ListNode head=dummy; int carry=0; while(l1!=null && l2!=null){ int sum=carry+l1.val+l2.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; l1=l1.next; l2=l2.next; } while(l1!=null){ //l2短,只剩l1 int sum=carry+l1.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; l1=l1.next; } while(l2!=null){ //l1短,只剩l2 int sum=carry+l2.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; l2=l2.next; } if(carry!=0){ //如果最后一位借位之后不是一位数字了 head.next=new ListNode(carry%10); } return dummy.next; }}
Follow up:
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: (7 -> 2 -> 4 -> 3) + (5 -> 6 -> 4)Output: 7 -> 8 -> 0 -> 7
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { /** * @param l1: the first list * @param l2: the second list * @return: the sum list of l1 and l2 */ public ListNode addLists2(ListNode l1, ListNode l2) { if(l1==null && l2==null){ return null; } ListNode n1=reverse(l1); //反转 ListNode n2=reverse(l2); //反转 ListNode dummy=new ListNode(-1); ListNode head=dummy; int carry=0; while(n1!=null && n2!=null){ int sum=carry+n1.val+n2.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; n1=n1.next; n2=n2.next; } while(n1!=null){ int sum=carry+n1.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; n1=n1.next; } while(n2!=null){ int sum=carry+n2.val; head.next=new ListNode(sum%10); carry=sum/10; head=head.next; n2=n2.next; } if(carry!=0){ head.next=new ListNode(carry%10); } return reverse(dummy.next); //反转 } private ListNode reverse(ListNode head){ ListNode pre=null; while(head!=null){ ListNode temp=head.next; head.next=pre; pre=head; head=temp; } return pre; }}
- [Amazon] Add Two Numbers I(II)
- Add Two Numbers II
- Add Two Numbers II
- Add Two Numbers II
- Add Two Numbers II
- LeetCode-2 && 445. Add Two Numbers I && II
- Leetcode Day6 2. Add Two Numbers I & II
- 445. Add Two Numbers II
- [LeetCode]Add Two Numbers II
- Add Two Numbers II ---LeetCode
- 445. Add Two Numbers II
- LeetCode445. Add Two Numbers II
- 445. Add Two Numbers II
- Leetcode Add Two Numbers II
- 445. Add Two Numbers II**
- 445. Add Two Numbers II
- leetcode_middle_12_445. Add Two Numbers II
- 445. Add Two Numbers II
- jsp
- Java StringBuffer 和 StringBuilder 类
- [Thinking in java]理解java三大特性之一继承
- brew install idutils=》Error: undefined method `rebuild' for #<BottleSpecification 解决方法
- DxO OpticsPro 11.4.2.12306 Windows 简体中文 汉化版 送4部教程
- [Amazon] Add Two Numbers I(II)
- HTML+CSS编写静态网站-34 为Contact页面添加样式
- [LeetCode]237. Delete Node in a Linked List
- 转摘 MYSQL 增加缓存后提升写入速度
- Java Executors(线程池)
- 409. Longest Palindrome
- RxJava操作符
- 毕业设计基于OpenCV的图像特征提取软件的设计与实现,部分展示
- 第一类斯特林数求自然数幂和学习小记