280. Wiggle Sort - cocoder39/coco39_LC GitHub Wiki
The rule is: if i is odd, nums[i] >= nums[i - 1]; if i is even, nums[i] <= nums[i - 1]
Suppose elements from index 0 to i - 1 is already wiggle sorted.
if i is even, then i - 1 is odd and nums[i - 1] >= nums[i - 2].
if nums[i] > nums[i - 1], then nums[i] > nums[i - 2], swap(nums[i], nums[i - 1]) can make elements from index 0 to i wiggle sorted. Hence, if [0 .. i-1] is already wiggle sorted, then we can maintain [0 .. i] wiggle sort through swapping i and i - 1.
T = O(N) and S = O(1).
void wiggleSort(vector<int>& nums) {
        for (int i = 1; i < nums.size(); i++) {
            if ((i % 2 == 0) == (nums[i] > nums[i - 1])) {
                swap(nums[i], nums[i - 1]);
            }
        }
    }