[leetcode]Add Two Numbers
来源:互联网 发布:和历史有关的影视知乎 编辑:程序博客网 时间:2024/05/14 10:50
Add Two Numbers:
题意:给定两个链表,表示两个数字,链表头部存的是数字的个位,输出一个链表,表示两数字的和。
解法:
O(m+n):维护目前进位变量temp,初始化=0。当两个链表都不为空时,将两链表当前node的值加和加上进位变量temp % 10成为ans的新节点,该值/ 10存到进位变量temp里。若只有一个节点不为空,操作类似。当两个链表都为空时,主要看进位变量是否为1,若为1,ans最高位需要加一个新节点。
public class Solution148 {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode ansHead=null;
ListNode ansTail=null;
int temp=0;
while(l1!=null||l2!=null){
ListNode tempNode=null;
if (l1!=null&&l2!=null){
tempNode=newListNode((l1.val+l2.val+temp) % 10);
temp=(l1.val+l2.val+temp)/ 10;
l1=l1.next;
l2=l2.next;
}else{
if (l1!=null){
tempNode=newListNode((l1.val+temp) % 10);
temp=(l1.val+temp)/ 10;
l1=l1.next;
}
if (l2!=null){
tempNode=newListNode((l2.val+temp) % 10);
temp=(l2.val+temp)/ 10;
l2=l2.next;
}
}
if (ansHead==null){
ansHead=tempNode;
ansTail=tempNode;
}else{
ansTail.next=tempNode;
ansTail=tempNode;
}
}
if (temp>0){
ansTail.next=new ListNode(1);
ansTail=ansTail.next;
ansTail.next=null;
}
ansTail.next=null;
return ansHead;
}
}
- LeetCode: Add Two Numbers
- LeetCode: Add Two Numbers
- [LeetCode]Add Two Numbers
- LeetCode Add Two Numbers
- Leetcode: Add Two Numbers
- LeetCode : Add Two Numbers
- LeetCode Add Two Numbers
- [LeetCode] Add Two Numbers
- Leetcode : Add Two Numbers
- 【leetcode】Add Two Numbers
- [LeetCode]Add Two Numbers
- leetcode Add Two Numbers
- LeetCode-Add Two Numbers
- [leetcode] Add Two Numbers
- [LeetCode] Add Two Numbers
- LeetCode - Add Two Numbers
- LeetCode | Add Two Numbers
- 【leetcode】Add Two Numbers
- 【Python】标准库模板os, sys, platform, logging
- AF_INET PF_INET AF_UNSPEC
- [leetcode]Longest Substring Without RepeatingCharacters
- Java JNI由浅入深(包括:Java和C++互传ArrayList泛型对象参数)
- 基于Java技术的大型网站架构设计方案
- [leetcode]Add Two Numbers
- BigDecimal类的加减乘除
- 连载:面向对象葵花宝典:思想、技巧与实践(4) - 面向对象是瑞士军刀还是一把锤子?
- JPBM整合SSH
- [leetcode]Longest Palindromic Substring
- RaceWeb介绍(2):由excel或csv文件在数据库中快速建表
- selenium webdriver 学习总结-数据驱动(六)
- javascript 基础
- JBPM流程变量的处理