1.反转链表(leetcode206)

题目描述:

反转一个单链表。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

迭代实现

思路:

创建两个结点,重复让后一个结点指向前一个结点,直到后一个结点的后继结点为空(由于反转链表,原来的头结点变为尾结点,所以要让头结点的next为空)

代码:


class Solution {public:ListNode* reverseList(ListNode* head) {if(!head ||!head->next) return head;auto p = head,q = p->next;while(q){auto o = q->next;q->next = p;p = q,q = o;}head->next = nullptr;return p;}
};

执行状态:

递归实现

思路:

编写该问题递归代码必须要有出口,即 if(condition) return 变量;这条语句,要实现的目的是让最后一个结点的后继结点指向它本身,而它自己的next指向空

 class Solution {public:ListNode* reverseList(ListNode* head) {if(!head || !head->next) return head;auto res = reverseList(head->next);head->next->next = head;head->next = nullptr;return res;}};

执行状态:

通过对比两种方法的执行状态,可以发现递归反转链表时空性能更好,效率更高。

2.链表实现两数相加(leetcode2):

题目描述:

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字 0 之外,这两个数都不会以 0 开头。

示例 1:

输入:l1 = [2,4,3], l2 = [5,6,4]
输出:[7,0,8]
解释:342 + 465 = 807.

示例 2:

输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:

输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

每个链表中的节点数在范围 [1, 100] 内
0 <= Node.val <= 9
题目数据保证列表表示的数字不含前导零

模拟加法

思路:

由于输入的两个链表都是逆序存储数字的位数的,因此两个链表中同一位置的数字可以直接相加。我们同时遍历两个链表,逐位计算它们的和,并与当前位置的进位值相加。如果链表遍历结束后,carry>0,还需要在答案链表的后面附加一个节点,节点的值为carry。

代码:

class Solution {public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {ListNode *head = nullptr, *tail = nullptr;int carry = 0;while (l1 || l2) {int n1 = l1 ? l1->val: 0;int n2 = l2 ? l2->val: 0;int sum = n1 + n2 + carry;if (!head) {head = tail = new ListNode(sum % 10);} else {tail->next = new ListNode(sum % 10);tail = tail->next;}carry = sum / 10;if (l1) {l1 = l1->next;}if (l2) {l2 = l2->next;}}if (carry > 0) {tail->next = new ListNode(carry);}return head;}
};

执行状态:

如果有疑问欢迎在下方评论,我会光速回复的!!!

反转链表与链表实现两数相加(简单思路)相关推荐

  1. leetcode-445. 两数相加 II

    给你两个 非空 链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储一位数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进阶: 如 ...

  2. LeetCode 2 两数相加(链表)

    题目要求: 给定两个非空链表来表示两个非负整数.位数按照逆序方式存储,它们的每个节点只存储单个数字.将两数相加返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 示例: 输入 ...

  3. python 链表两数相加

    | 两数相加 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表示和的链表. 你可以假设 ...

  4. 链表相加 2. 两数相加

    2. 两数相加 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链 ...

  5. LeetCode 445. 两数相加 II(链表大数加法)

    1. 题目 给定两个非空链表来代表两个非负整数.数字最高位位于链表开始位置.它们的每个节点只存储单个数字.将这两数相加会返回一个新的链表. 你可以假设除了数字 0 之外,这两个数字都不会以零开头. 进 ...

  6. [链表遍历|模拟] leetcode 2 两数相加

    [链表遍历|模拟] leetcode 2 两数相加 1.题目 题目链接 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字. 如果 ...

  7. leetcode链表中的两数相加问题

    2. 两数相加 找出两个链表中较长的链表,原地修改后,作为最后的返回结果 两个链表从前往后遍历,考虑进位,直到短链表结束. 将长链表数值放入结果(考虑进位). 考虑是否需要额外增加一个结点来放进位 c ...

  8. 力扣刷题-单链表两数相加

    分区:链表 2.两数相加 题目描述: 给你两个 非空 的链表,表示两个非负的整数.它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字. 请你将两个数相加,并以相同形式返回一个表 ...

  9. 练习:两数相加(链表逆序存储求和数字)

    2021年「博客之星」评选开始投票开启--我想要您投一票 我的CSDN主页 My Python 学习个人备忘录 我的博文推荐 两数相加    CSDN"每日一练"(Python)题 ...

  10. 链表/模拟 - 两数相加

    题目链接 模拟两数相加,记录进位. /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *ne ...

最新文章

  1. c语言程序设计入门导论,程序设计入门——C语言
  2. 《精通自动化测试框架设计》目录—导读
  3. Sprint会议记录(第五组)
  4. Linux和Windows路由配置
  5. 弹性盒子内容体居右对其_弹性盒子侧轴对齐方式
  6. 数据结构与算---重点复习知识
  7. Java实现图片压缩代码,图片大小转换
  8. linux 通过at命令创建任务
  9. python爬虫怎么赚钱-如何利用python爬虫挣钱
  10. 29 顺时针打印矩阵(四-画图让抽象问题形象化)
  11. 一维 cnn matlab,1D-CNN 一维信号的深度学习算法和例子包括CNN - 下载 - 搜珍网
  12. Win11怎么把桌面文件路径改到D盘
  13. python图像质量评价_图像质量评价和视频质量评价(IQA/VQA)
  14. thinkpadt410接口介绍_【ThinkPadT410s(2912BR7)评测】丰富接口满足日常所需-中关村在线...
  15. 钉钉日志范文100篇_钉钉日志,让领导看得见你的工作
  16. vue spa项目转服务器渲染
  17. 通过uc_client接口方式,更新discuz会员头像
  18. Windows系统盘瘦身
  19. Domain Adaption 领域自适应
  20. LeetCode题解(1552):将多个球放入指定位置的多个篮子后两球之间最小距离的最大值(Python)

热门文章

  1. 并联机构工作空间求解_断路器机构弹簧的设计
  2. Confluence 6 恢复一个空间
  3. 简单理解javascript中的原型对象,实现对之间共享属性和行为
  4. 终于忙完了,要开启代码生涯了
  5. window下搭建react-native开发环境
  6. isjavaidentifierpart和isjavaidentifierstart有区别么?
  7. Silverlight+WCF 新手实例 象棋 该谁下棋-A下B停(二十八)
  8. C语言 第二章 数据类型、变量和输入函数
  9. 0.python class
  10. 【C009】ArcGIS VBA - 学习