*445. Add Two Numbers II
1. 原始题目
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
2. 题目理解
给定两个整数,求和。注意链表每个结点只放一个数字。高位在前。
3. 解题
思路:两个链表分别进栈,然后出栈时相加,注意设置一个临时变量用来存放进位。每次相加时应该是3个值相加:链表a+链表b+进位。
此外注意的是若最高为还有进位,则继续添加新节点。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None class Solution:
def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:
stack1 = []
stack2 = [] newhead = ListNode(0)
while(l1):
stack1.append(l1.val)
l1 = l1.next
while(l2):
stack2.append(l2.val)
l2 = l2.next
p = 0 # 进位
while stack1 or stack2 or p: # 注意这里别丢了 or p命令。如果有进位则还需创建新节点
temp = (stack1.pop() if stack1 else 0) + \
(stack2.pop() if stack2 else 0) + p # 每次的和为两个链表的和+进位
p = temp//10 # 更新进位 node = ListNode(temp%10)
node.next = newhead.next
newhead.next = node return newhead.next
验证:
# 新建链表1
listnode1 = ListNode_handle(None)
s1 = [1,2,3,4,5,6,7,8]
for i in s1:
listnode1.add(i)
listnode1.print_node(listnode1.head) # 新建链表2
listnode2 = ListNode_handle(None)
s2 = [1,5,9,9,9]
for i in s2:
listnode2.add(i)
listnode2.print_node(listnode2.head) s = Solution()
head = s.addTwoNumbers(listnode1.head, listnode2.head)
listnode1.print_node(head)
1 2 3 4 5 6 7 8
1 5 9 9 9
1 2 3 6 1 6 7 7
*445. Add Two Numbers II的更多相关文章
- [LeetCode] 445. Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- 445. Add Two Numbers II - LeetCode
Question 445. Add Two Numbers II Solution 题目大意:两个列表相加 思路:构造两个栈,两个列表的数依次入栈,再出栈的时候计算其和作为返回链表的一个节点 Java ...
- LeetCode 445 Add Two Numbers II
445-Add Two Numbers II You are given two linked lists representing two non-negative numbers. The mos ...
- 【LeetCode】445. Add Two Numbers II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 先求和再构成列表 使用栈保存节点数字 类似题目 日期 ...
- 445. Add Two Numbers II ——while s1 or s2 or carry 题目再简单也要些测试用例
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- 445. Add Two Numbers II 链表中的数字求和
[抄题]: You are given two non-empty linked lists representing two non-negative integers. The most sign ...
- [leetcode]445. Add Two Numbers II 两数相加II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
- 【Leetcode】445. Add Two Numbers II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
- 445. Add Two Numbers II【Medium】【两个链表求和】
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
随机推荐
- python自动化开发-[第十四天]-javascript(续)
今日概要: 1.数据类型 2.函数function 3.BOM 4.DOM 1.运算符 算术运算符: + - * / % ++ -- 比较运算符: > >= < <= != = ...
- 虚拟机部署hadoop集群准备工作之多虚拟机设置网络信息
安装好了centos6.4(最简版)后 1,静态IP设置 查看虚拟机的网络设置信息来配置
- Linux下常用配置文件
/etc/sysconfig/network 包括主机基本网络信息,用于系统启动 /etc/sysconfig/network-script/ 此目录下是系统启动最初始化网络的信息 /etc/sysc ...
- python-常用数据类型
九 基本数据类型 什么是数据?为何要有多种类型的数据? #数据即变量的值,如age=18,18则是我们保存的数据. #变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的 ...
- 细说tomcat之应用监控
官网:http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html Java应用程序的监控通过JMX实现,详见:https://docs.oracle ...
- JAVA正确地自定义比较对象---如何重写equals方法和hashCode方法
在实际应用中经常会比较两个对象是否相等,比如下面的Address类,它有两个属性:String province 和 String city. public class Address { priva ...
- CSS魔法(五)项目实战
三大标签--title.description.keyword 淘宝网 <title>淘宝网 - 淘!我喜欢</title> <meta name="spm ...
- IScroll5要防止重复加载
增加一个判断条件,ajax未返回前,设置为true,返回前设置为false,只有为false下才能够出发加载数据事件效果好很多.
- Tooltip导致的无法访问已释放对象
最近C#项目中遇到了一个无法访问已释放对象问题,经过反复测试,最终发现问题出在控件Tootip上,因为tootip内部有一个定时器,如果在窗口销毁时,鼠标移动到控件上恰好产生了一个tooltip,就会 ...
- WMware虚拟机中连接ios真机
虚拟机中能看到IOS真机,但MAC OS看不到,进行如下设置虚拟机设置->USB控制器->USB兼容性->选择2.0