Skip to content

Instantly share code, notes, and snippets.

@cangoal
Last active August 29, 2015 14:22
Show Gist options
  • Save cangoal/41987a8f53ca794f048f to your computer and use it in GitHub Desktop.
Save cangoal/41987a8f53ca794f048f to your computer and use it in GitHub Desktop.
LeetCode - Rotate List
// consider case k =0 seperately
public ListNode rotateRight(ListNode head, int k) {
if(head == null) return head;
int size = 1;
ListNode cur = head;
while(cur.next != null){
cur = cur.next;
size++;
}
k = k % size;
if(k == 0) return head; // when k=0 return head directly
ListNode dummyNode = new ListNode(0);
dummyNode.next = head;
ListNode runner = dummyNode;
ListNode walker = dummyNode;
int i = 0;
while(i < k){
runner = runner.next;
i++;
}
while(runner.next != null){
runner = runner.next;
walker = walker.next;
}
ListNode newHead = walker.next;
runner.next = dummyNode.next;
dummyNode.next = newHead;
walker.next = null;
return newHead;
}
// include case: k=0 generally
public ListNode rotateRight(ListNode head, int k) {
if(head == null) return head;
int size = 1;
ListNode cur = head;
while(cur.next != null){
cur = cur.next;
size++;
}
k = k % size;
// if(k == 0) return head;
ListNode runner = head;
ListNode walker = head;
int i = 0;
while(i < k){
runner = runner.next;
i++;
}
while(runner.next != null){
runner = runner.next;
walker = walker.next;
}
runner.next = head;
ListNode newHead = walker.next;
walker.next = null;
return newHead;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment