LeetCode Reverse Nodes in k-Group
2013-12-11 21:04
225 查看
这题好像是美团的一道笔试题,当初记得一种好的方法使用栈,但是这要复制元素,本题有了限制;之后我花了两个小时想找递归的算法,后来还是没找到,下面的是最普通的那种做法,也是调了一阵子才弄出来的。
void reverse(ListNode **s,ListNode**e) { ListNode *p=*s,*q=NULL,*r=NULL; (*e)->next = NULL;//this is very important if (*s==*e) return ; if(p) q = p->next; if (q&&q!=*e) r = q->next; q->next = p; p =q; q = r; while(q) { if(r)//&&r!=*e { r =r->next; //q = r; } //else // q = NULL; q->next = p; p = q; q = r; } (*s)->next = NULL; } ListNode *reverseKGroup(ListNode *head, int k) { if(head==NULL||head->next==NULL||k<=1) return head; ListNode *s1=head,*e1=NULL; ListNode *rethead=NULL,*p=NULL,*q=head; while(q) { s1 = q; int i; for (i=0;i<k&&q;i++) { e1 = q; q = q->next; } if (i!=k&&q==NULL&&rethead==NULL) { return head; } if (q==NULL&&i<k)//add this means when remaining nodes less than k do not converse { p->next = s1; p = e1; break;//return rethead; } reverse(&s1,&e1); if (rethead==NULL) { rethead = e1; p = s1; } else { p->next = e1; p = s1; } } if(p) p->next = NULL; return rethead; }
相关文章推荐
- [LeetCode] Reverse Nodes in k-Group
- LeetCode_Reverse Nodes in k-Group
- [Leetcode]_25 Reverse Nodes in k-Group
- leetcode Reverse Nodes in k-Group
- Leetcode 25 Reverse Nodes in k-Group
- [LeetCode]Reverse Nodes in k-Group, 解题报告
- Reverse Nodes in k-Group - LeetCode
- LeetCode - H - Reverse Nodes in k-Group
- Leetcode 25 Reverse Nodes in k-Group
- LeetCode:Reverse Nodes in k-Group
- Reverse Nodes in k-Group-LeetCode
- leetcode:Reverse Nodes in k-Group(以k为循环节反转链表)【面试算法题】
- 【Leetcode】Reverse Nodes in k-Group
- LeetCode Reverse Nodes in k-Group
- [LeetCode]题解(python):025-Reverse Nodes in k-Group
- [LeetCode]25 Reverse Nodes in k-Group
- Reverse Nodes in k-Group [LeetCode]
- leetcode 25 -- Reverse Nodes in k-Group
- Leetcode-Reverse Nodes in k-Group
- leetcode-Reverse Nodes in k-Group