【链表】LeetCode 92. 反转链表 II
题目链接
思路
和【链表】LeetCode 206. 反转链表的思路一样,只不过需要调整一下realHead
头结点的位置,同时原题中的null
在本题中为rightNode
的下一个结点。
注意: 如果left == 1
则说明head
结点也需要被反转,此时反转后的首结点为rightNode
需要在返回的时候单独判断。
代码
class Solution {
public ListNode reverseBetween(ListNode head, int left, int right) {
if(left == right){
return head;
}
ListNode realHead = new ListNode(-1, head);
for(int i = 1; i < left; i++){
realHead = realHead.next;
}
ListNode rightNode = new ListNode(-1, head);
for(int i = 0; i < right; i++){
rightNode = rightNode.next;
}
ListNode endNode = rightNode.next;
ListNode p = realHead.next;
realHead.next = endNode;
while(p != endNode){
ListNode q = p.next;
p.next = realHead.next;
realHead.next = p;
p = q;
}
return left == 1 ? rightNode : head;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」