Rotate Array Java Solution - The Coding Shala

Home >> Interview Questions >> Rotate Array

Rotate Array

Problem:

Given an array, rotate the array to the right by k steps, where k is non-negative.

Example 1:
Input: [1,2,3,4,5,6,7] and k = 3
Output: [5,6,7,1,2,3,4]
Explanation:
rotate 1 steps to the right: [7,1,2,3,4,5,6]
rotate 2 steps to the right: [6,7,1,2,3,4,5]
rotate 3 steps to the right: [5,6,7,1,2,3,4]

Example 2:

Input: [-1,-100,3,99] and k = 2
Output: [3,99,-1,-100]

Explanation: 
rotate 1 steps to the right: [99,-1,-100,3]
rotate 2 steps to the right: [3,99,-1,-100]

Rotate Array Java Solution

Approach 1: 
We can use an extra array. Time complexity will be O(n) and Space Complexity will be O(n).

Java 

class Solution {
    public void rotate(int[] nums, int k) {
        int len = nums.length;
        k = k%len;
        int[] tmp = new int[len];
        for(int i = 0; i<len; i++) tmp[i] = nums[(i+len-k)%len];
        for(int i=0;i<len;i++) nums[i] = tmp[i];
    }
}

Approach 2:
Using the reverse of an array.
Time Complexity O(n).
Space Complexity O(1).

Java 

class Solution {
    public void rotate(int[] nums, int k) {
        int len = nums.length;
        k = k%len;
        reverse(nums, 0, len-1);
        reverse(nums, 0, k-1);
        reverse(nums, k, len-1);
    }
    
    public void reverse(int[] nums, int i, int k){
        while(i < k){
            int tmp = nums[k];
            nums[k] = nums[i];
            nums[i] = tmp;
            i++;
            k--;
        }
    }
}



Other Posts You May Like
Please leave a comment below if you like this post or found some error, it will help me to improve my content.

Comments

Popular Posts from this Blog

Java Program to Convert Binary to Decimal - The Coding Shala

N-th Tribonacci Number Solution - The Coding Shala

Shell Script to find sum, product and average of given numbers - The Coding Shala

Shell Script to Create a Simple Calculator - The Coding Shala

Java Program to Convert Decimal to Binary - The Coding Shala