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:待翻转链表段翻转后的尾结点;


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程