-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDAY65: Rearrange Array Alternately
108 lines (80 loc) · 2.65 KB
/
DAY65: Rearrange Array Alternately
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
Rearrange Array Alternately
Given a sorted array of positive integers. Your task is to rearrange the array elements alternatively i.e first element should be max value, second should be min value, third should be second max, fourth should be second min and so on.
Note: Modify the original array itself. Do it without using any extra space. You do not have to return anything.
Example 1:
Input:
n = 6
arr[] = {1,2,3,4,5,6}
Output: 6 1 5 2 4 3
Explanation: Max element = 6, min = 1,
second max = 5, second min = 2, and
so on... Modified array is : 6 1 5 2 4 3.
Example 2:
Input:
n = 11
arr[]={10,20,30,40,50,60,70,80,90,100,110}
Output:110 10 100 20 90 30 80 40 70 50 60
Explanation: Max element = 110, min = 10,
second max = 100, second min = 20, and
so on... Modified array is :
110 10 100 20 90 30 80 40 70 50 60.
Your Task:
The task is to complete the function rearrange() which rearranges elements as explained above. Printing of the modified array will be handled by driver code.
Expected Time Complexity: O(N).
Expected Auxiliary Space: O(1).
Constraints:
1 <= n <= 10^6
1 <= arr[i] <= 10^7
SOLUTION:-
//{ Driver Code Starts
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main (String[] args)throws IOException
{
// Scanner in = new Scanner(System.in);
// int t = in.nextInt();
BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
//testcases
int t = Integer.parseInt(read.readLine());
while(t-- >0)
{
//size of array
int n = Integer.parseInt(read.readLine());
long[] arr= new long[n];
String str[] = read.readLine().trim().split(" ");
//adding elements to the array
for(int i=0;i<n;i++)
arr[i] = Long.parseLong(str[i]);
// StringBuffer sb = new StringBuffer();
Solution ob = new Solution();
//calling rearrange() function
ob.rearrange(arr, n);
StringBuffer sb = new StringBuffer();
//appending and printing the elements
for(int i =0; i < n; i++)
sb.append(arr[i] + " ");
System.out.println(sb);
}
}
}
// } Driver Code Ends
class Solution{
// temp: input array
// n: size of array
//Function to rearrange the array elements alternately.
public static void rearrange(long arr[], int n){
// Your code here
ArrayList<Long> al = new ArrayList<>();
for(int i = 0 ; i < n ; i++)
{
al.add(arr[n-1-i]);
al.add(arr[i]);
}
for(int i = 0 ; i < n ; i++)
{
arr[i] = al.get(i);
}
}
}