leetcode求指导
来源:7-7 广度优先遍历和最短路径
weixin_宝慕林6024717
2019-08-10
请问老师,leetcode第25题怎么做?求思路
写回答
1回答
-
liuyubobobo
2019-08-10
首先你要彻底掌握Leetcode 206 号问题,翻转链表。https://leetcode.com/problems/reverse-linked-list/
在这个基础上,其实就是一段一段翻转而已。。。
以下讲解基于我的实现代码(C++):https://github.com/liuyubobobo/Play-Leetcode/blob/master/0025-Reverse-Nodes-in-k-Group/cpp-0025/main.cpp
1)每次定位要翻转的链表段 pre->next 到 end (pre指向要翻转的链表段的前一个节点)。(32-35行)
2)翻转 pre->next 到 end 的链表(42行)
3)原翻转链表段的前一个节点的next指翻转后的头结点;翻转后的尾结点的next指向原来尾结点的next(44-46行)
4)pre设为翻转后的尾结点,继续循环进行(47行)
关键是搞清楚每一个指针的的是什么节点,语义是怎样的,维护住每个变量的语义。在我的代码中:
pre:待翻转链表段的前一个节点;
pre->next:带翻转链表段的第一个节点;
end:待翻转链表段最后一个节点;
next:待翻转链表段最后一个节点的后一个节点
rhead:待翻转链表段翻转后的头结点;
tail:待翻转链表段翻转后的尾结点;
继续加油!:)
00
相似问题