LeetCode题目: 25. Reverse Nodes in k-Group
来源:互联网 发布:vr医疗软件 编辑:程序博客网 时间:2024/05/22 01:30
LeetCode题目: 25. Reverse Nodes in k-Group
原题链接:https://leetcode.com/problems/reverse-nodes-in-k-group/description/
解题思路:
(虽说题目限制常数空间,但是用栈保存节点也是可行的一种方法,可以过)
将链表的前k位翻转,然后递归链表剩余的部分,最后返回头结点。
核心思想:
- 使用三个遍历节点对数组进行遍历,分别是preTemp,temp,nextTemp
- 反转时,使temp->next = preTemp即可
- 由于保存了nextTemp,可以继续向前遍历直到结束
代码细节:
- 当k<=1时,不需要反转。
- 递归到链表尾时,temp是空,因此nextTemp需要判断
坑点:
- k > list.size()时不反转
代码:
// 求List的长度 int getSize(ListNode* head) { int size = 0; while (head != NULL) { size++; head = head->next; } return size;}ListNode* reverseKGroup(ListNode* head, int k) { // 三种情况不需要反转,直接输出 if (k <= 1 || head == NULL || getSize(head) < k) return head; // 此时至少有两个节点 ListNode *newHead; // 反转后的新头结点 ListNode *preTemp = head; // 遍历节点的前一个节点 ListNode *temp = head->next; // 用于遍历的节点 ListNode *nextTemp = temp->next; // 遍历节点的后一个节点 for (int i = 1; i < k; i++) { // 修改节点指向 temp->next = preTemp; // 所有遍历用指针前移 preTemp = temp; temp = nextTemp; if (temp != NULL) nextTemp = temp->next; } // 对头结点赋值 newHead = preTemp; // 未反转节点链接 head->next = reverseKGroup(temp, k); return newHead;}
阅读全文
0 0
- LeetCode题目: 25. Reverse Nodes in k-Group
- [LeetCode]25.Reverse Nodes in k-Group
- LeetCode --- 25. Reverse Nodes in k-Group
- LeetCode 25.Reverse Nodes in k-Group
- [Leetcode] 25. Reverse Nodes in k-Group
- 【LeetCode】25.Reverse Nodes in k-Group
- [leetcode] 25.Reverse Nodes in k-Group
- Leetcode-25.Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- leetCode 25. Reverse Nodes in k-Group
- Leetcode 25. Reverse Nodes in k-Group
- leetcode:25. Reverse Nodes in k-Group
- LeetCode 25. Reverse Nodes in k-Group
- 【leetcode】25. Reverse Nodes in k-Group
- leetcode 25. Reverse Nodes in k-Group
- bzoj3357 [Usaco2004]等差数列
- 结合redis设计与实现的redis源码学习-4-dict(字典)
- 多线程:控制线程
- 五、jQuery中的事件本质
- spoj Query on a tree again(树链剖分)
- LeetCode题目: 25. Reverse Nodes in k-Group
- 数据库实例:mysql与mongo结合用户登录
- Ubuntu android studio 加载 arr
- CentOS上安装redis
- hdu 1811 Rank of Tetris (拓扑排序+并查集)
- UVA 156 【map的使用】【字符串模拟】
- 安装开发环境和开发软件和学习html5
- PB对Unicode的支持
- 简述YAML语言