当前位置: 首页 > news >正文

leetcode_206 反转链表

1. 题意

原地反转链表,非常经典的一道题。

2. 解决

2.1 非递归

非递归的比较好理解;链表需要维护前驱后继两个信息,当我们要更改后继时,先要把原来的后继先存起来。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {// A->B->C// next = getNext;// cur->next = pre// pre = cur;// cur =  next;// //          pre//          |//          V//  null <- A    B->C // null <- A     ListNode *pre = nullptr;ListNode *cur = head;while ( cur ) {ListNode *nxt = cur->next;cur->next = pre;pre = cur;cur = nxt;}return pre;}};
2.2 递归

递归的比较难理解一些 。

由于返回的是翻转后的头节点,因此需要不断的递归到没有后继节点的最后一个节点, 它就是反转后链表的头节点了。

返回的链表的最后 一个节点是head->next , 将它的指向改成当前节点。同时我们还需要将当前节点的next域置空,否则无法将原先的头指空。

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* reverseList(ListNode* head) {// A->B->Cif ( head == nullptr || head->next == nullptr) {return head;}ListNode *newHead = reverseList( head->next );ListNode *newListTail = head->next;newListTail->next = head;head->next = nullptr;return newHead;}};

3. 参考

[lc206]

http://www.dtcms.com/a/235369.html

相关文章:

  • Kubernetes指标实现有效的集群监控和优化
  • 【AUTOSAR COM】E2E的不同profiles的含义以及应用
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月6日第100弹
  • 鸿蒙开发 获取当前页面的路径和名字
  • k8s下离线搭建elasticsearch
  • uni-app 项目支持 vue 3.0 详解及版本升级方案?
  • 在uni-app中如何从Options API迁移到Composition API?
  • Linux 基础IO(中)
  • 【Linux】(1)—进程概念-④fork、僵尸进程、孤儿进程
  • daz3d + PBRSkin (MDL)+ SSS
  • Python爬虫实战:研究mechanize库相关技术
  • spring:实例化类过程中方法执行顺序。
  • tpc udp http
  • 鸿蒙开发——如何修改模拟器的显示图标/标题
  • React-表单受控绑定和获取Dom元素
  • ​​高频通信与航天电子的材料革命:猎板PCB高端压合基材技术解析​​
  • ✅ 常用 Java HTTP 客户端汇总及使用示例
  • C#子线程更新主线程UI及委托回调使用示例
  • openLayers实现实时轨迹
  • 【HarmonyOS 5】出行导航开发实践介绍以及详细案例
  • 29.【新型数据架构】-边缘计算数据架构
  • 边缘计算网关提升水产养殖尾水处理的远程运维效率
  • Windows系统中如何使用符号链接将.vscode等配置文件夹迁移到D盘(附 CMD PowerShell 双版本命令)
  • 摆脱硬件依赖:SkyEye在轨道交通中的仿真应用
  • hbuildx运行uzapp项目初始化配置
  • day35-系统编程之网络编程IV及MQTT协议
  • 相机Camera日志分析之二十七:高通相机Camx 基于预览1帧的process_capture_result二级日志分析详解
  • AI系统提示词:V0
  • PDF转Markdown/JSON软件MinerU最新1.3.12版整合包下载
  • Chrome安装代理插件ZeroOmega(保姆级别)