[LeetCode]Reverse Nodes in k-Group
来源:互联网 发布:java报表技术 编辑:程序博客网 时间:2024/06/09 21:10
struct ListNode {int val;ListNode *next;ListNode(int x) : val(x), next(NULL) {}};class Solution {//once the link order of the list is changed, //we must keep the previous pointer(p in the code) updated, if we want to use it agianpublic:void reverse_range(ListNode* prev, ListNode* end, ListNode*& p){ListNode* last = prev->next;ListNode* cur = last->next;while(cur != end){last->next = cur->next;cur->next = prev->next;prev->next = cur;cur = last->next;}p = last;}ListNode *reverseKGroup(ListNode *head, int k) {// Start typing your C/C++ solution below// DO NOT write int main() functionif(k <= 1) return head;ListNode dummy(-1);dummy.next = head;ListNode* prev = &dummy;ListNode* p = dummy.next;int cnt = 1;while(p != NULL){if(cnt%k == 0){reverse_range(prev, p->next, p);//update p is very importantprev = p;}p = p->next;cnt++;}return dummy.next;}};
second time
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void reverseList(ListNode* head, int k, ListNode*& reverseHead, ListNode*& reverseTail, ListNode*& nextHead) { reverseTail = head; ListNode* prev = head; ListNode* cur = head->next; for(int i = 0; i < k-1; ++i) { if(cur == NULL) break; ListNode* tmp = cur->next; cur->next = prev; prev = cur; cur = tmp; } reverseHead = prev; nextHead = cur; } bool enoughSubList(ListNode* head, int k) { while(head != NULL && k != 0) { k--; head = head->next; } return k==0; } ListNode *reverseKGroup(ListNode *head, int k) { // Start typing your C/C++ solution below // DO NOT write int main() function ListNode dummy(-1); dummy.next = head; ListNode* prev = &dummy; ListNode* nextHead = head; while(nextHead != NULL) { ListNode* reverseHead; ListNode* reverseTail; if( enoughSubList(nextHead, k) ) reverseList(nextHead, k, reverseHead, reverseTail, nextHead); else { prev->next = nextHead; break; } prev->next = reverseHead; prev = reverseTail; prev->next = NULL; } return dummy.next; }};
- LeetCode:Reverse Nodes in k-Group
- LeetCode: Reverse Nodes in k-Group
- LeetCode : Reverse Nodes in k-Group
- leetcode 42: Reverse Nodes in k-Group
- [Leetcode] reverse nodes in K-Group
- [LeetCode]Reverse Nodes in k-Group
- LeetCode-Reverse Nodes in k-Group
- LeetCode - Reverse Nodes in k-Group
- LeetCode | Reverse Nodes in k-Group
- 【leetcode】Reverse Nodes in k-Group
- Leetcode: Reverse Nodes in k-Group
- leetcode Reverse Nodes in k-Group
- [LeetCode] Reverse Nodes in k-Group
- LeetCode题解: Reverse Nodes in k-Group
- 【Leetcode】Reverse Nodes in k-Group
- LeetCode Reverse Nodes in k-Group
- [Leetcode] Reverse Nodes in k-Group (Java)
- LeetCode(25)Reverse Nodes in K-Group
- spring管理hibernate延迟加载配置(openSessionInView)
- [LeetCode]Restore IP Addresses
- svn 入门者基础应用
- [LeetCode]Reverse Integer
- [LeetCode]Reverse Linked List II
- [LeetCode]Reverse Nodes in k-Group
- ZJUT 1002 最小内积
- [HTML] 琐琐碎碎(二)——HTML表单与输入
- [LeetCode]Roman to Integer
- [LeetCode]Rotate Image
- GCC常用编译选项
- [LeetCode]Rotate List
- 日志分析工具-webexpert篇
- HBase完全分布式安装及案例设计