Question:
Given a sorted array arr[] of distinct integers. Sort the array into a wave-like array(In Place).
In other words, arrange the elements into a sequence such that arr[1] >= arr[2] <= arr[3] >= arr[4] <= arr[5].....
If there are multiple solutions, find the lexicographically smallest one.
Note:The given array is sorted in ascending order, and you don't need to return anything to make changes in the original array itself.
Example 1:
Input:
n = 5
arr[] = {1,2,3,4,5}
Output: 2 1 4 3 5
Explanation: Array elements after
sorting it in wave form are
2 1 4 3 5.
Example 2:
Input:
n = 6
arr[] = {2,4,7,8,9,10}
Output: 4 2 8 7 10 9
Explanation: Array elements after
sorting it in wave form are
4 2 8 7 10 9.
Your Task:
The task is to complete the function convertToWave(), which converts the given array to a wave array.
Expected Time Complexity: O(n).
Expected Auxiliary Space: O(1).
Constraints:
1 ≤ n ≤ 106
0 ≤ arr[i] ≤107
ANS:
Time Complexity: O(n);
1) hamne is problem ko ek single loop se banaya hai.
2) is problem me hame first ke 2 elements ko swap krna hai
3) ek loop chala rhe jo ki 0th index se start hoga lekin i+1 na hoke i+2 increment hoga , kyo ki first ke 2 element to swap ho jayenge to hame i+2 ke element ko swap karna hoga.
class Solution {
public static void convertToWave(int n, int[] a) {
// code here
for (int i = 0; i < n - 1; i += 2) {
// Swap adjacent elements
int temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
}
Comments
Post a Comment