Skip to content

Commit

Permalink
Create 25-Reverse-Nodes-in-k-Group.cs
Browse files Browse the repository at this point in the history
  • Loading branch information
ShrujanKotturi committed Sep 29, 2022
1 parent eee8d7c commit 152aa04
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions csharp/25-Reverse-Nodes-in-k-Group.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/**
* Definition for singly-linked list.
* public class ListNode {
* public int val;
* public ListNode next;
* public ListNode(int val=0, ListNode next=null) {
* this.val = val;
* this.next = next;
* }
* }
*/
public class Solution
{
public ListNode ReverseKGroup(ListNode head, int k)
{
var dummy = new ListNode(0, head);
var groupPrev = dummy;
var groupNext = dummy;

while (true)
{
var kth = getKth(groupPrev, k);
if (kth == null)
break;

groupNext = kth.next;

// reverse group
var prev = kth.next;
var curr = groupPrev.next;

while (curr != groupNext)
{
var temp = curr.next;
curr.next = prev;
prev = curr;
curr = temp;
}

var tmp = groupPrev.next;
groupPrev.next = kth;
groupPrev = tmp;
}

return dummy.next;
}

private ListNode getKth(ListNode curr, int k)
{
while (curr != null && k > 0)
{
curr = curr.next;
k -= 1;
}

return curr;
}
}

0 comments on commit 152aa04

Please sign in to comment.