【LeetCode刷题-中等】2. 两数相加(python c++)
题目描述
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
思路
设立一个表示进位的变量carried,建立一个新链表, 把输入的两个链表从头往后同时处理,每两个相加,将结果加上carried后的值作为一个新节点到新链表后面。
关键点解析
链表这种数据结构的特点和使用
用一个carried变量来实现进位的功能,每次相加之后计算carried,并用于下一位的计算
考虑两种特殊情况:
- 长度不相等 123 + 45678
- 有进位的情形 11 + 99 = 110
Python
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = Noneclass Solution:def addTwoNumbers(self, l1: ListNode, l2: ListNode) -> ListNode:tmp = p = ListNode()f = 0while l1 or l2 or f:f += (l1.val if l1 else 0) + (l2.val if l2 else 0)p.next = ListNode(f % 10)p = p.nextf = f // 10l1 = l1.next if l1 else 0l2 = l2.next if l2 else 0return tmp.next
C++
/*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode* tmp = nullptr;ListNode* cur = nullptr;int f = 0;while(l1 != nullptr || l2 != nullptr || f != 0){f += (l1 == nullptr ? 0 : l1->val) + (l2 == nullptr ? 0 : l2->val);auto temp = new ListNode(f % 10);f = f / 10;if(cur == nullptr){cur = temp;tmp = temp;}else{cur->next = temp;cur = cur->next;}l1 = l1 == nullptr ? nullptr : l1->next;l2 = l2 == nullptr ? nullptr : l2->next;}return tmp;}
};
【LeetCode刷题-中等】2. 两数相加(python c++)相关推荐
- 力扣刷题-单链表两数相加
分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...
- 【leetcode】力扣刷题(2):两数相加(go语言)
一.问题描述 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表 ...
- leetcode刷题:2.两数之和
本篇博客介绍如何找到两数之和.获取相加的两个数获取最终target的方法. 先看如下图: 我们很容易想到暴力解法.即两次循环获取结果,第一次循环循环黑圈,我们先假定第一个黑圈中1,是我们要的数,然后接 ...
- LeetCode刷题笔记——001两数之和
题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,数组中同一个元素不能使用 ...
- 【leedcode刷题1】两数之和
[leedcode刷题 1]两数之和 大家好,小生不才,从今天开始将自己刷题的过程记录在博客中,因为能力有限,所以如果有什么错的地方希望大家积极指正,不胜感激. 题目 给定一个整数数组 nums 和一 ...
- LeetCode刷题笔记- 15.三数之和
LeetCode刷题笔记- 15.三数之和 C语言 题目 注意点 C语言 /*** Return an array of arrays of size *returnSize.* The sizes ...
- python【力扣LeetCode算法题库】2-两数相加
两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表 ...
- 【leetcode刷题】21.三数之和——Java版
⭐欢迎订阅<leetcode>专栏,每日一题,每天进步⭐ 一题二写,三数之和,题解四瞅五瞄六瞧,水平还七上八下九流,十分辣鸡. --leetcode此题热评 前言 哈喽,大家好,我是一条. ...
- 简单算法题:leetcode-2 两数相加
算法撸一遍,从简单的开始. 做leetcode题目的时候,经常百度答案,但感觉大多不是我想要的,很多我不能理解.现在也做了一些算法题,哪些并不是很深奥,但需要一些技巧,简单的算法题更多的是经验值.这里 ...
- Leetcode 2 两数相加 Python
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
最新文章
- java 3gpp转mp3_Android音频以及音频播放器开发实例
- dedecms首页如何调用专题页描述和链接
- python dbscan 如何确定eps参数_如何选择eps和minPts(DBSCAN算法的两个参数)以获得有效结果?...
- pyqt5绘画API
- RMAN SET NEWNAME
- delphi 到出execl2010 文件损坏_Win7系统出现explorer.exe损坏的图像的解决方法是什么?...
- MySQL sql99语法介绍
- SpringSecurity加密认证
- python中什么是按位取反_Python学习中的“按位取反”笔记总结
- Swagger介绍及使用
- 防护疫情防御插画|后疫情时代宣传不可小觑
- VmWare工作笔记001---弹出错误提示无法连接mks:套接字连接尝试次数太多
- 电脑桌面打开计算机后出现两部分,为什么当打开电脑时,桌面会出现两个我的文档的窗口,是不是中病毒了,怎么处理啊...
- vim打开bin文件
- 站在知乎肩上-做更强的自己(4)
- ESP32 系列之 ESP-IDF 官方构建方案
- request body is missing
- MySQL专题二——SELECT语法
- python csv 大文件_python 快速把超大txt文件转存为csv的实例
- 往自己脖子以上的投资永远不会贬值