Print an Array in Waveform
viaGlassdoor
Problem: Given an array, rearrange it so that it forms a "wave" pattern: arr[0] >= arr[1] <= arr[2] >= arr[3] <= arr[4]... (alternating peaks and valleys).
Constraints: Any valid wave arrangement is acceptable (not necessarily unique).
Example: [10, 5, 6, 3, 2, 20, 100, 80] -> a valid waveform could be [10,5,6,2,20,3,100,80].
Approach: Sort the array first, then swap adjacent pairs (index 0&1, 2&3, 4&5, ...) - since after sorting arr[i] <= arr[i+1], swapping every adjacent pair automatically creates the desired peak/valley pattern. O(n log n) time. An O(n) in-place variant checks and swaps adjacent elements directly at even indices without a full sort.
asked …