324. Wiggle Sort Ii¶
Difficulty: Medium
LeetCode Problem View on GitHub
324. Wiggle Sort II
Medium
Given an integer array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]....
You may assume the input array always has a valid answer.
Example 1:
Input: nums = [1,5,1,1,6,4] Output: [1,6,1,5,1,4] Explanation: [1,4,1,5,1,6] is also accepted.
Example 2:
Input: nums = [1,3,2,2,3,1] Output: [2,3,1,3,1,2]
Constraints:
1 <= nums.length <= 5 * 1040 <= nums[i] <= 5000- It is guaranteed that there will be an answer for the given input
nums.
Follow Up: Can you do it in O(n) time and/or in-place with O(1) extra space?
Solution¶
class Solution {
static class custom_sort implements Comparator<Integer> {
@Override
public int compare(Integer first, Integer second) {
return Integer.compare(second, first);
}
}
public void wiggleSort(int[] nums) {
int n = nums.length;
PriorityQueue<Integer> pq = new PriorityQueue<>(new custom_sort());
for (int ele : nums) pq.offer(ele);
int ind = 1;
while (ind < n) {
nums[ind] = pq.poll();
ind += 2;
}
ind = 0;
while (pq.size() > 0) {
nums[ind] = pq.poll();
ind += 2;
}
}
}
Complexity Analysis¶
- Time Complexity:
O(?) - Space Complexity:
O(?)
Approach¶
Detailed explanation of the approach will be added here