leetcode144add-two-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
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
// write code here
//创建结果链表的头结点,默认该节点中的value为-1
ListNode dummy=new ListNode(-1);
ListNode pre=dummy;
//进位标识carry,默认为0
int carry =0;
//遍历链表,当两个链表都为空时,退出
while (l1!=null || l2 !=null){
//判断该节点是否为空,当节点为空时,用0补全,不为空时,加数即为节点的值
int d1=(l1==null) ?0:l1.val;
int d2=(l2==null)? 0:l2.val;
//对节点求和,注意:求和是需要考虑到进位
int sum=d1+d2+carry;
//更新进位标识,
carry=(sum>=10)?1:0;
//sum%10标识求和的个位数,将其保存到结果链表中
pre.next=new ListNode(sum%10);
pre=pre.next;
if (l1!=null) l1=l1.next;
if (l2!=null) l2=l2.next;
}
//重点 这是一个特殊情况,当两个链表计算完后
//还需要判断进位标识是否为1,如果为1,如28+81=104,需要创建一个节点保存最高位
if (carry ==1)
pre.next=new ListNode(1);
return dummy.next;
}
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param l1 ListNode类
* @param l2 ListNode类
* @return ListNode类
*/
ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
// write code here
ListNode fake(0);
ListNode *p=&fake;
int carry=0;
while (l1 || l2 || carry)
{
int sum=(l1?l1->val:0)+(l2?l2->val:0)+carry;
carry=sum/10;
p->next=new ListNode(sum%10);
p=p->next;
l1=l1?l1->next:nullptr;
l2=l2?l2->next:nullptr;
}
return fake.next;
}
};
leetcode144add-two-numbers的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
- [LeetCode] Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- [LeetCode] Maximum XOR of Two Numbers in an Array 数组中异或值最大的两个数字
Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...
- [LeetCode] Count Numbers with Unique Digits 计算各位不相同的数字个数
Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n. Examp ...
- [LeetCode] Bitwise AND of Numbers Range 数字范围位相与
Given a range [m, n] where 0 <= m <= n <= 2147483647, return the bitwise AND of all numbers ...
- [LeetCode] Valid Phone Numbers 验证电话号码
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [LeetCode] Consecutive Numbers 连续的数字
Write a SQL query to find all numbers that appear at least three times consecutively. +----+-----+ | ...
- [LeetCode] Compare Version Numbers 版本比较
Compare two version numbers version1 and version1.If version1 > version2 return 1, if version1 &l ...
- [LeetCode] Sum Root to Leaf Numbers 求根到叶节点数字之和
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
随机推荐
- HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表(目录)
HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 01 HTML & CSS & JavaScript 从一个表格到一个灰阶颜色表 02 HT ...
- 一键安装PyCharm
1.准备阶段,首先去官网下载:https://download.jetbrains.8686c.com/python/pycharm-professional-2019.1.exe 官网地址:http ...
- 实验二 C2C实践
实验二 C2C实践 [实验目的] 掌握网上购物的基本流程和C2C平台的运营 [实验条件] ⑴.个人计算机一台 ⑵.计算机通过局域网形式接入互联网. (3).奥派电子商务应用软件 [知识准备] 本实验 ...
- 【C++入门学习笔记】函数和对象!你需要这一篇文章入门C++!
一.本篇要学习的内容和知识结构概览 二.知识点逐条分析 1. 混合型语言 C++源文件的文件扩展名为.cpp, 也就是c plus plus的简写, 在该文件里有且只能有一个名为main的主函数, ...
- Consul 学习笔记—服务发现
前言: 上一篇文章简单实用Consul试下服务注册,本篇继续学习Consul中的另外特性:服务发现.KV操作 :以及对上篇文章中存在的问题进行解决 问题解决 在上一篇文章中,注册服务提示检查失败. 通 ...
- centos8平台使用stress做压力测试
一,安装stress: 说明:el8的源里面还没有,先用el7的rpm包 [root@centos8 source]# wget https://download-ib01.fedoraproject ...
- centos8平台搭建mysql8数据库主从同步
一,两台服务器的规划 a服务器:主机名:yjweb ip: 121.122.123.47 角色:主库 server-id:1 j服务器:主机名: os3 ip: 121.122.123.134 角色: ...
- sql查询:部门工资前三高的员工和部门工资最高的员工
创建表:Create table If Not Exists Employee (Id int, Name varchar(255), Salary int, DepartmentId int);Cr ...
- Python函数递归调用
函数的递归调用: 是函数嵌套调用的一种特殊形式 具体是指: 在调用一个函数的过程中又直接或间接地调用到了本身 # 直接调用本身 def func(): print('我是func') func() f ...
- Linux入门到放弃之三《常用命令(帮助命令,文件压缩和解压,关机、重启,加载光盘...)》
1.获得命令帮助: man命令的用法: 命令:man find ( 获取find命令的帮助文档 ) 2.复制/root/install.log 到/tmp: ( 确认root目录下是否存在instal ...