发布时间:2026/7/29 6:39:17
刷题笔记:力扣第206题-反转链表 1.看评论区有朋友总结出了一个简单明了的思路原链表:1→2→3→4(prenull)1 null←1 2→3→4(pre1)2 null←1←2 3→4(pre2)3 null←1←2←3 4(pre3)4 null←1←2←3←4(pre4)每次都将原链表的next指向新链表的末尾并且都记录上一次操作的节点pre写出的完整代码如下1. /** 2. * Definition for singly-linked list. 3. * struct ListNode { 4. * int val; 5. * struct ListNode *next; 6. * }; 7. */ 8. struct ListNode* reverseList(struct ListNode* head) { 9. // 空链表直接返回NULL 10. if (head NULL) return NULL; 11. 12. // cur遍历当前处理节点初始指向头节点 13. struct ListNode* cur head; 14. // pre保存上一个节点反转后作为当前节点后继初始为空 15. struct ListNode* pre NULL; 16. while (cur ! NULL){ 17. // tmp临时保存下一个节点防止断链丢失后续链表 18. struct ListNode* tmp cur-next; 19. // 当前节点指向前面节点完成反转 20. cur-next pre; 21. // tmp为空说明已经遍历到原链表最后一个节点就是反转后的新头节点 22. if (tmp NULL){ 23. return cur; 24. } 25. // pre更新为当前节点作为下一轮的前驱 26. pre cur; 27. // cur移动到原下一个节点继续反转 28. cur tmp; 29. } 30. 31. return cur; 32. }还可以继续简化不需要if (tmp NULL)返回值从cur改为pre即可最后一次pre的指向的节点便是新链表的头结点。这样一来就连一开始的特出情况判断if (head NULL) return NULL也可以删去了。2.上述代码使用的是迭代法循环下面这种写法是递归法自己调用自己1. /** 2. * Definition for singly-linked list. 3. * struct ListNode { 4. * int val; 5. * struct ListNode *next; 6. * }; 7. */ 8. // 递归反转链表辅助函数pre为前一个节点cur为当前处理节点 9. struct ListNode* reverse(struct ListNode* pre, struct ListNode* cur){ 10. // 递归终止条件当前节点为空pre就是反转后的头节点 11. if (cur NULL) return pre; 12. // 临时保存cur原本的下一个节点防止断链 13. struct ListNode* tmp cur-next; 14. // 将当前节点指向前面节点完成局部反转 15. cur-next pre; 16. // 更新前驱节点为当前节点供下一层递归使用 17. pre cur; 18. // 递归处理下一个节点 19. return reverse(pre, tmp); 20. } 21. 22. // 链表反转入口函数 23. struct ListNode* reverseList(struct ListNode* head) { 24. // 初始前驱传NULL当前节点传链表头调用递归反转 25. return reverse(NULL, head); 26. }这种写法与第一种思路一模一样只是进行了递归改写。

相关新闻

2026/7/29 6:39:17

基因编辑CRISPR与单细胞测序:十年技术演进与生命科学范式转移

1. 从“盘点”到“回响”:为什么我们今天还要看2014年的发明?每次看到“盘点”和“重要发明”这样的字眼,我总会下意识地先问自己一个问题:这些被媒体和机构选中的“重要发明”,十年后回头看,它们真的重要吗…

2026/7/29 6:39:17

ReactNative与OpenHarmony跨平台开发实战

1. 跨平台开发新战场:ReactNative与OpenHarmony的融合实践最近在折腾一个有意思的技术组合——把ReactNative生态的三方库react-native-inappbrowser移植到OpenHarmony平台。这个需求源于我们团队正在开发的跨平台应用需要在鸿蒙设备上实现安全的内置浏览器功能。传…

2026/7/29 6:39:17

AI如何革新文献综述:智能检索与自动摘要技术解析

1. 文献综述的痛点与AI解决方案写文献综述可能是每个科研人最头疼的环节之一。我读博那会儿,经常要花一两周时间泡在图书馆,翻阅几十篇论文,做笔记、分类、总结,最后才能写出一篇像样的综述。现在回想起来,那些日子真是…

2026/7/29 8:04:37

2025年量子计算、脑机接口与核聚变三大科研突破

1. 2025年科研热点全景扫描 2025年的科研界正在经历一场前所未有的技术聚合与学科交叉浪潮。作为一名长期跟踪前沿科技发展的研究者,我观察到今年至少有三大领域正在发生范式级别的突破:首先是量子计算实用化进程超预期,多个研究团队宣布实现…

2026/7/29 8:04:37

C++循环控制:break与continue语句的深度解析与实战应用

1. 项目概述:为什么青少年学C需要理解break和continue? 在辅导青少年学习C编程的这几年里,我发现很多孩子卡在循环结构上。他们能写出 for 和 while 的框架,但一旦涉及到“在某种条件下提前结束循环”或者“跳过某次循环”&am…

2026/7/29 8:04:37

全同态加密实战:云端安全处理敏感数据的技术解析与应用

1. 项目概述:当数据安全遇上云端计算 最近几年,数据安全和隐私计算成了技术圈里绕不开的话题。我自己在做一些涉及用户行为分析或者医疗健康数据的项目时,就经常遇到一个两难困境:数据太敏感,不敢直接上传到云端服务器…

2026/7/29 8:04:37

OpenStack Keystone与CloudSim云计算实验指南

1. 项目概述 云计算作为当前IT基础设施的核心技术,其学习与实践的重要性不言而喻。本次实验将聚焦两大核心内容:OpenStack身份认证服务Keystone的安装配置,以及CloudSim云计算仿真平台的部署。这两个工具分别代表了云计算领域的两大方向——实…

2026/7/29 7:59:36

Java技术体系解析:从语言特性到JVM原理

1. Java技术全景解析:从编程语言到生态体系刚接触Java的新手常会困惑:Java到底是什么?是一门编程语言?还是一个运行平台?或是某种技术标准?实际上,Java是一个包含编程语言、虚拟机平台和庞大技术…

2026/7/28 13:41:25

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

2026/7/29 0:02:56

商标注册找代理还是自己办?算清这笔“时间账”和“风险账

商标注册,找代理还是自己办?帮你算清这笔“时间账”和“风险账”“商标注册,找代理还是自己办?”这是深圳每个创业者都会遇到的灵魂拷问。有人说找代理是花冤枉钱,有人说自己办风险太高。到底哪种更划算?本…

2026/7/29 0:02:56

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案

免费开源RPA工具OpenRPA:企业级自动化流程的终极解决方案 【免费下载链接】openrpa Free Open Source Enterprise Grade RPA 项目地址: https://gitcode.com/gh_mirrors/op/openrpa 你是否厌倦了每天重复枯燥的数据录入和报表整理工作?是否希望有…

2026/7/29 0:02:56

KMS智能激活工具:一站式解决Windows和Office激活难题

KMS智能激活工具:一站式解决Windows和Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为系统弹出激活提示而烦恼吗?KMS智能激活工具能够帮你彻底告别W…

2026/7/28 4:38:09

3个高效策略:快速掌握Axure中文界面配置

3个高效策略:快速掌握Axure中文界面配置 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure RP的英文界面感…