From 219ba6047ee6e6e24a2e3e80b46e2ac7c742652f Mon Sep 17 00:00:00 2001 From: Devashish Pant <83301269+devashishpant89@users.noreply.github.com> Date: Fri, 15 Oct 2021 22:03:28 +0530 Subject: [PATCH] Create rotate_linked_list.java added code to rotate ll --- rotate_linked_list.java | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 rotate_linked_list.java diff --git a/rotate_linked_list.java b/rotate_linked_list.java new file mode 100644 index 0000000..a45a380 --- /dev/null +++ b/rotate_linked_list.java @@ -0,0 +1,39 @@ +package linkedlists; + +public class RotateLinkedList { + + public class ListNode { + int val; + ListNode next; + ListNode() {} + ListNode(int val) { this.val = val; } + ListNode(int val, ListNode next) { this.val = val; this.next = next; } + } + + + public static ListNode rotateRight(ListNode head, int k) { + + if(k ==0) return head; + int size = 1; + + ListNode fast = head; + ListNode slow = head; + + while(fast.next != null){ + size++; + fast = fast.next; + } + //slow points to the item where the cycle starts + // use to break cycle later on + for(int cycle = size - k % size; cycle > 1; cycle--){ + slow = slow.next; + } + + fast.next = head; + head = slow.next; + slow.next = null; + + return head; + + } + }