leetcode2. 两数相加
使用迭代的方式
class Solution{
public:
ListNode *addTwoNumbers(ListNode* l1,ListNode *l2)
{
ListNode *res=new ListNode(-);
ListNode *p=res;
int temp=,increase=;
while(l1 && l2)
{
temp=l1->val+l2->val+increase;
ListNode *r = new ListNode(-);
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l1=l1->next;
l2=l2->next;
}
while(l1)
{
ListNode *r = new ListNode(-);
temp=l1->val+increase;
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l1=l1->next;
} while(l2)
{
ListNode *r = new ListNode(-);
temp=l2->val+increase;
if(temp>=)
increase=;
else
increase=;
r->val=temp%;
res->next=r;
res=res->next;
l2=l2->next;
}
if(increase==)
{
ListNode *r = new ListNode();
res->next=r;
}
return p->next; } };
其实还有更简洁的书写方式,我上面是用了三个while,其实一个while就够了,如下,更加优雅,摘自Leetcode,侵删
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode DummyHead = new ListNode(); // 初始化一个伪头结点
ListNode pre = DummyHead; // 用 pre 记录要创建并赋值的节点的前一个节点
int Carry = ; // 初始化进位
while( l1 != null || l2 != null || Carry > ) // 继续相加的条件是 链表对应位置中存在不为空的节点 或 有进位
{
int sum = ((l1 != null) ? l1.val : ) + ((l2 != null) ? l2.val : ) + Carry; //计算对应位的和(需要加上进位)
Carry = sum / ; // 记录下次相加的进位
pre.next = new ListNode(sum % ); // 创建并赋值下个节点
pre = pre.next; // pre 移动到新创建的节点位置上,便于下一轮继续创建新节点 /* 当节点不为空的时候,指向它的下一个节点(之前判断的是其后节点是否为空,导致超时,因为与while的条件不匹配) */
if(l1 != null)
l1 = l1.next;
if(l2 != null)
l2 = l2.next;
}
return DummyHead.next; // 返回有数据的第一个节点,也就是伪节点的下一个节点
}
}
leetcode2. 两数相加的更多相关文章
- [Swift]LeetCode2. 两数相加 | Add Two Numbers
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- LeetCode2.两数相加 JavaScript
给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入:(2 -& ...
- Leetcode2 两数相加 Python
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- Leetcode2.两数相加——简洁易懂
> 简洁易懂讲清原理,讲不清你来打我~ 输入两个链表,相同位置相加,进位给下一个位置,输出相加后的链表
2. 两数相加 2. Add Two Numbers 题目描述 You are given two non-empty linked lists representing two non-negati ...
- [CareerCup] 18.1 Add Two Numbers 两数相加
18.1 Write a function that adds two numbers. You should not use + or any arithmetic operators. 这道题让我 ...
- ✡ leetcode 167. Two Sum II - Input array is sorted 求两数相加等于一个数的位置 --------- java
Given an array of integers that is already sorted in ascending order, find two numbers such that the ...
- [Swift]LeetCode445. 两数相加 II | Add Two Numbers II
You are given two non-empty linked lists representing two non-negative integers. The most significan ...
随机推荐
- spring boot 开启https
1.生成证书 keytool -genkey -alias tomcat -keyalg RSA -keystore E:/https.keystore 将生成好的证书放在项目根目录即可 2 修改配置 ...
- HTML连载18-id选择器与class区别&class选择器使用思路&后代选择器
一.id选择器和classable选择器的区别 选择器 CSS中的开头 HTML标签可以绑定几个 是否可重复 用途 id选择器 # 仅能一个 不可以重复(一个标签里仅有一个) 一般情况下是给JS用的, ...
- fiddler抓包-7-C端弱网测试
前言大家平时也会发现我们有时候在地铁.高铁.电梯等等某个时候网络信号比较差导致网络延迟较大,这时是否有友好提示呢?甚至有可能发生崩溃等等...所以我们是可以通过fiddler来对web.APP.PC客 ...
- 混合 App 打开 H5 调试开关
背景 随着现在移动端设备的硬件性能的提高,现在web页面的体验逐渐变得可以接受,现在很多的应用都采用的Hybrid开发模式,一方面有利用了原生设备的API的优势(性能好.用户体验好),另一方面利用了w ...
- DGCNN
架构总览 模型的整体架构源于 WebQA 的参考论文 Dataset and Neural Recurrent Sequence Labeling Model for Open-Domain Fact ...
- Gitlab 部署汉化及邮件配置
Gitlab 简介 Gitlab 是一个基于git私有代码管理的服务集成. Nginx:静态web服务器. gitlab-shell:用于处理Git命令和修改authorized keys列表. gi ...
- 使用NumPy、Numba的简单使用(一)
Numpy是python的一个三方库,主要是用于计算的,数组的算数和逻辑运算.与线性代数有关的操作. 很多情况下,我们可以与SciPy和 Matplotlib(绘图库)一起使用.来替代MatLab,下 ...
- .NET Core跨平台部署于Docker(Centos)- 视频教程
(双击全屏播放) 往期教程: .NET开发框架(一)-框架介绍与视频演示 .NET开发框架(二)-框架功能简述 .NET开发框架(三)-高可用服务器端设计 .NET开发框架(四)-服务器IIS实践教程 ...
- Go语言中初始化变量中字面量&Type{}、new、make的区别
Go语言中new和make是内建的两个函数,主要用来创建分配类型内存.在我们定义生成变量的时候,可能会觉得有点迷惑,其实他们的规则很简单,下面我们就通过一些示例说明他们的区别和使用. 变量的声明 va ...
- 6 、 图论—NP 搜索
6.1 最大团 //最大团 //返回最大团大小和一个方案,传入图的大小 n 和邻接阵 mat //mat[i][j]为布尔量 #define MAXN 60 void clique(int n, in ...