| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 代码随想录算法训练营Day3 | 203.移除链表元素 707.设计链表 206.反转链表 -> 正文阅读 |
|
[数据结构与算法]代码随想录算法训练营Day3 | 203.移除链表元素 707.设计链表 206.反转链表 |
Leetcode 203. Remove Linked List Elements移除头节点和移除其他节点的操作是不一样的,因为链表的其他节点都是通过前一个节点来移除的,而头节点没有前一个节点。所以我们可以用一个虚拟头来作为头节点。 python 代码如下: 所以这里虚拟头的 next 是初始链表的头,然后我们从虚拟头开始 (作为 cur),如果 cur.next 的值和需要移除的值一样,我们就把 cur.next 指向 cur.next.next。如果不需要移除,我们就把 cur 移动到下一个 node 进行比较。最后返回的结果注意是 dummy_head.next,移除虚拟头。 c++ 代码如下: 这里注意 c++ 对于 next, val 的写法和 python 不一样,而且 dummy node 的建立写法也不同。 Leetcode 707. Design Linked List这道题目有点长,所以看起来会有点复杂,首先我们要理解我们需要实现什么功能。 在链表类中实现这些功能:
这道题目设计链表的五个接口:
可以说这五个接口,已经覆盖了链表的常见操作,是练习链表操作非常好的一道题目。而且题目中也提到了可以使用单链表或者双链表。这里首先使用的是单链表,之后会作为练习用双链表还有 c++ 来写的。 单链表 双链表 python 代码如下: Leetcode 206. Reverse Linked List这道题我们需要两个指针,一个 cur 指针,初始为头节点,再定义一个 pre 指针,初始为 none。然后开始反转,首先要把 cur.next 节点用 temp 指针保存一下,因为接下来要改变 cur.next 的指向了,将 cur.next 指向 pre ,此时已经反转了第一个节点了。 接下来,就是循环这个逻辑,继续移动 pre 和 cur 指针, 把 pre 移动到 cur, 把 cur 移动到之前提前存好的初始的 cur.next (temp)。最后,cur 指针已经指向了 none,循环结束,链表也反转完成了。 此时我们 return pre 指针就可以了,pre 指针就指向了新的头结点。 python 代码如下: c++ 代码如下: References |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 19:23:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |