![]() |
VOOZH | about |
Given an array of N positive integers. The task is to check if the array is sorted in wave form.
Examples:
Input: arr[] = {1, 2, 3, 4, 5}
Output: NOInput: arr[] = {1, 5, 3, 7, 2, 8, 6}
Output: YES
Approach:
Below is the implementation of above approach:
YES
Time Complexity: O(n)
Auxiliary Space: O(1)
Approach :- 2 One approach to check if an array is a wave array is to first sort the array in ascending order. Then, we can swap adjacent elements to form a wave-like pattern. If at least one element does not satisfy the wave property, the array is not a wave array.
Here is the implementation of this approach:
Traverse the array from the second element to the second last element.
Check if the current element is greater than or equal to both its adjacent elements or smaller than or equal to both its adjacent elements.
If it satisfies the above condition, move to the next element, else return false.
If the entire array has been traversed without any element failing the condition, return true.
The array is a wave array
Time Complexity:
The algorithm involves a linear scan of the entire array, which takes O(nlogn) time, where n is the size of the array.
Auxiliary Space:
The algorithm uses only constant extra space to store the indices and variables, which does not depend on the size of the array. Hence, the space complexity is O(1).