LeetCode 25. Reverse Nodes in k-Group
来源:互联网 发布:微反应训练软件 编辑:程序博客网 时间:2024/05/17 04:30
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.
If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is.
You may not alter the values in the nodes, only nodes itself may be changed.
Only constant memory is allowed.
For example,
Given this linked list: 1->2->3->4->5
For k = 2, you should return: 2->1->4->3->5
For k = 3, you should return: 3->2->1->4->5
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseKGroup(ListNode *head, int k) { if ((head == NULL) || (k == 1)) { return head; } ListNode dummy(0); ListNode *last_tail = &dummy; ListNode *cur_head, *cur_tail; while(head != NULL) { cur_head = head; for (int i = 1; ((i < k) && (head != NULL)); ++i) { head = head->next; } if (head == NULL) { last_tail->next = cur_head; break; } else if (head->next == NULL) { last_tail->next = head; reverseList(cur_head, k); cur_head->next = NULL; break; } else { cur_tail = head; head = head->next; reverseList(cur_head, k); last_tail->next = cur_tail; last_tail = cur_head; } } return dummy.next; }private: void reverseList(ListNode *head, int k) { ListNode *pre = head; ListNode *temp; head = head->next; for (int i = 1; i < k; ++i) { temp = head->next; head->next = pre; pre = head; head = temp; } }};
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
- LeetCode 237. Delete Node in a Linked List
- 【JavaEE—Struts2】Struts2概述以及框架入门
- 【iOS开发】synx的安装与使用
- LeetCode 24. Swap Nodes in Pairs
- ubuntu16.04安装vim及vim的命令使用方法
- LeetCode 25. Reverse Nodes in k-Group
- python+django 更改了urls.py 之后runserver报错的解决办法
- Linux下的查找指令
- 【飞得更高】扫清Android面试障碍--面试前的准备
- 代码命名规范
- 做了个安卓和php端通信的app,但是返回数据处理时异常
- 装饰器模式
- LeetCode 328. Odd Even Linked List
- 用星际快速入门PHP面向对象编程(很有意思的教程 赞赞赞)