Reverse Nodes in k-Group Java
来源:互联网 发布:sms软件下载 编辑:程序博客网 时间:2024/06/05 07:40
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ /*Key to solve: * This is one kind of extended question from reverse linked list, and different with swapPairs question, * since we are required to reverse in K group, k base on user input * Approach: * 1. locate beginPrev and endNext node of each group, in total k group * 2. using a dummy node 0 for reverse * 0->1->2->3->4->5->null * | | * beginPrev endNext * after call beginPrev = reverse(beginPrev, endNext) * 0->3->2->1 -> 4->5->null * | | * beginPrev endNext * if the number of left-out nodes is a multiple of k, then update the endNext, then call reverse function again * until the left-out nodes less than k, remain same. * the difficult is to divide a single list into k group and reverse individually, and locate the beginPrev node each time */public class Solution { public ListNode reverseKGroup(ListNode head, int k) { if(head ==null || k==1) return head;ListNode dummy=new ListNode(0);dummy.next=head;ListNode beginPrev=dummy;ListNode cur=head;int count=0;while(cur!=null){count++;ListNode endNext=cur.next;//select for each group in size of kif(count==k){//reverse linked list in each group individually//and locate and update beginPrev nodebeginPrev=reverse(beginPrev,endNext);count=0;}cur=endNext;}return dummy.next; } //reverse of linked list and reture the updated beginPrev nodepublic ListNode reverse(ListNode beginPrev,ListNode endNext){ListNode prev=beginPrev;ListNode last=beginPrev.next;ListNode cur=beginPrev.next.next;while(cur!=endNext){last.next=cur.next;cur.next=prev.next;prev.next=cur;cur=last.next;}return last;}}
0 0
- [Leetcode] Reverse Nodes in k-Group (Java)
- Reverse Nodes in k-Group Java
- Reverse Nodes in k-Group (Java)
- [LeetCode][Java] Reverse Nodes in k-Group
- LeetCode : Reverse Nodes in k-Group [java]
- Reverse Nodes in k-Group leetcode java
- Reverse Nodes in k-Group
- Reverse Nodes in K-Group
- Reverse Nodes in k-Group
- Reverse Nodes In K Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- Reverse Nodes in k-Group
- 【C语言学习趣事】_32_平胸的尴尬,嫁不出去的姑娘
- 【POJ】3723 Conscription 最小生成树
- 用verilog实现m序列生成
- zoj 2876 Phone List
- JAVA基本排序方法
- Reverse Nodes in k-Group Java
- TreeSet()详解
- swig+python的用法
- Linux权限机制
- 01背包问题
- TOMCAT配置HTTPS生成单向证书问题
- 图片显示的内存回收出现RuntimeException: Canvas: trying to use a recycled bitmap
- Android中ListView、GridView里的CheckBox混乱且记录选中数量不准确的解决方案
- 如何判断一个数是否为2的N次方