Fork me on GitHub

Wiggle Sort

Description

Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....

Example:

1
2
Input: nums = [3,5,2,1,6,4]
Output: One possible answer is [3,5,1,6,2,4]

https://leetcode.com/problems/wiggle-sort/description/

Solution

1
2
3
4
5
6
7
8
9
10
11
class Solution {
public:
void wiggleSort(vector<int>& nums) {
int size = nums.size();
if (size == 0|| size == 1) return;
for (int i = 0; i < size - 1; ++i)
if ((i % 2 == 1 && nums[i] < nums[i + 1]) || (i % 2 == 0 && nums[i] > nums[i + 1]) )
swap(nums[i], nums[i + 1]);
return;
}
};