Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

07 Linked List --> 5. Rotate a Linked List #84

Open
FazeelUsmani opened this issue Jul 2, 2021 · 2 comments
Open

07 Linked List --> 5. Rotate a Linked List #84

FazeelUsmani opened this issue Jul 2, 2021 · 2 comments

Comments

@FazeelUsmani
Copy link
Owner

Given a singly linked list of size N. The task is to rotate the linked list counter-clockwise by k nodes, where k is a given positive integer smaller than or equal to length of the linked list.

Example 1:

Input:
N = 5
value[] = {2, 4, 7, 8, 9}
k = 3
Output: 8 9 2 4 7
Explanation:
Rotate 1: 4 -> 7 -> 8 -> 9 -> 2
Rotate 2: 7 -> 8 -> 9 -> 2 -> 4
Rotate 3: 8 -> 9 -> 2 -> 4 -> 7
Example 2:

Input:
N = 8
value[] = {1, 2, 3, 4, 5, 6, 7, 8}
k = 4
Output: 5 6 7 8 1 2 3 4

Your Task:
You don't need to read input or print anything. Your task is to complete the function rotate() which takes a head reference as the first argument and k as the second argument, and returns the head of the rotated linked list.

Expected Time Complexity: O(N).
Expected Auxiliary Space: O(1).

Constraints:
1 <= N <= 103
1 <= k <= N

@PracticalMetal
Copy link

Hi, I would like to work on this, Can you suggest me ways to get started?

@lcpz
Copy link

lcpz commented Nov 20, 2021

The explanation may trick you into thinking that you need to do k rotations, while in reality you just need to split the list in two pieces and swap them. Note that the splitting element is in position n - k if k is even, and n - k - 1 otherwise. Check #97

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants