| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> ListNode链表结构超详细解析,LeetCode题解 -> 正文阅读 |
|
[数据结构与算法]ListNode链表结构超详细解析,LeetCode题解 |
LeetCode第二题两数之和中,用到了ListNode这么一个结构。记录下解题思路和步骤。 ListNode结构:ListNode是一个链表结构,首先我们要知道链表是什么。 链表是由数据+指针构造而成的,指针指向下一个节点的数据。如下图: 所以我们在定义ListNode结构的时候,就需要定义两个属性,一个是当前节点的值,一个是下一个节点的ListNode类型的值,用来实现指针的功能。
可以加上构造函数:
假如说要定义[2, 4, 6]这么一个链表,也可以这么赋值,这样我感觉会更清晰的理解到链表的结构。
题解:清楚链表的结构后,回到题目上。原题如下: 题目的意思是,两个链表的数字都是按照逆序方式存储。 2->4->3,对应的数字是342;5->6->4,对应的数字是465。相加得出807,对应的链表是7->0->8。
举个🌰: 以题中两个链表为例,第一位2 + 5?+?上一节点进位数 = 7,7 /?10 = 0 进位数为0;7 % 10 = 7,??头部节点为7。 第二位4 + 6 + 上一节点的进位数 = 10,10 / 10 = 1,进位数为1;10 % 10 = 0? ,本节点数为?0。 第三位3 + 4 + 上一节点的进位数1 = 7,7 / 10 = 0,进位数为0;7 % 10 = 7 ,本节点数为8。 结果值为7->0->8 再举个🌰: [9,9,9]和[9,9]两个链表相加 第一位9 + 9 +上一节点的进位数= 18,18 / 10 = 1,进位数= 1;18 % 10 = 8? 本节点数= 8; 第二位9 + 9 + 上一节点进位数1 = 19, 19?/ 10 = 1,进位数=1;19?% 10 = 9 本节点数= 9; 第三位9 + 0 + 上一节点进位数1 = 10,10?/ 10 = 1,进位数=1;10 % 10? = 0 本节点数 = 0; 注意这个地方最后一个节点计算完毕,进位数>0 ,所以需要再追加一位。结果值应该是8->9->0->1。 步骤:下面就可以解题了,先捋一下解题的步骤:
附上代码: 每一步都有注释解析。
结束。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 16:50:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |