提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- K 个一组翻转链表
- 题目:
- 分析:
- 数K个数,返回
- 链表反转
- 总逻辑
- 代码
K 个一组翻转链表
https://leetcode.com/problems/reverse-nodes-in-k-group/
题目:
分析:
数K个数,返回
publicstaticListNodegetKGroupEnd(ListNodestart,intk){while(--k!=0&&start!=null){start=start.next;}returnstart;}链表反转
publicstaticvoidreverse(ListNodestart,ListNodeend){end=end.next;ListNodepre=null;ListNodecur=start;ListNodenext=null;while(cur!=end){next=cur.next;cur.next=pre;pre=cur;cur=next;}start.next=end;}总逻辑
代码
// 测试链接:https://leetcode.com/problems/reverse-nodes-in-k-group/publicclassCode04_ReverseNodesInKGroup{// 不要提交这个类publicstaticclassListNode{publicintval;publicListNodenext;}publicstaticListNodereverseKGroup(ListNodehead,intk){ListNodestart=head;ListNodeend=getKGroupEnd(start,k);if(end==null){returnhead;}// 第一组凑齐了!head=end;reverse(start,end);// 上一组的结尾节点ListNodelastEnd=start;while(lastEnd.next!=null){start=lastEnd.next;end=getKGroupEnd(start,k);if(end==null){returnhead;}reverse(start,end);lastEnd.next=end;lastEnd=start;}returnhead;}publicstaticListNodegetKGroupEnd(ListNodestart,intk){while(--k!=0&&start!=null){start=start.next;}returnstart;}publicstaticvoidreverse(ListNodestart,ListNodeend){end=end.next;ListNodepre=null;ListNodecur=start;ListNodenext=null;while(cur!=end){next=cur.next;cur.next=pre;pre=cur;cur=next;}start.next=end;}}