Rotate the array by k steps in java .
Method 1->
using extra array
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("enter array size=");
int n=sc.nextInt();
int[] arr=new int[n];
System.out.println("enter elements in array=");
for(int i=0; i<n; i++){
arr[i]=sc.nextInt();
}
System.out.println("array is=");
for(int ele: arr){
System.out.print(ele+" ");
}
System.out.println("\nenter value of k=");
int k=sc.nextInt();
k=k%n;
int[] brr = new int[n];
int j=0;
for(int i=n-k; i<n; i++){
brr[j]=arr[i];
j++;
}
for(int i=0; i<=n-k-1; i++){
brr[j]=arr[i];
j++;
}
System.out.println("\nrotate array is=");
for(int ele: brr){
System.out.print(ele+" ");
}
}
}
method 2->
without using array
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("enter array size=");
int n=sc.nextInt();
int[] arr=new int[n];
System.out.println("enter elements in array=");
for(int i=0; i<n; i++){
arr[i]=sc.nextInt();
}
System.out.println("array is=");
for(int ele: arr){
System.out.print(ele+" ");
}
System.out.println("\nenter value of k=");
int k=sc.nextInt();
k=k%n;
reverse(arr,0,n-k-1);
reverse(arr,n-k,n-1);
reverse(arr,0,n-1);
}
public static void reverse(int[] arr, int i, int j){
while(i<=j){
int t=arr[i];
arr[i]=arr[j];
arr[j]=t;
i++;
j--; }
}
}
output->
enter array size=5
enter elements in array=
12
45
89
75
56
array is=
12 45 89 75 56
enter value of k=
7
rotate array is=
75 56 12 45 89
Comments
Post a Comment