280. Wiggle Sort


做题历程:

  1. 本题应该是第一次做,大概耗时27分钟,而且没有解出

实话实说,本题的解法并不复杂,但是感觉有点触及我的思维盲点,导致我没法立刻想到答案。 思路大概就是:

  1. 如果index奇数,保证他比前面的数大
  2. 如果index偶数,保证他比前面的数小

大概解法就是这么简单,但是验证这个方法的正确性,需要耗一点脑细胞。。。仔细想想大概能想明白,但是我目前也没法弄一个严谨的证明。。 直接上代码吧,代码如下:、

class Solution {
public:
    void wiggleSort(vector<int>& nums) {
        if (nums.size() <= 1) {
            return;
        }
        for (int i = 1; i < nums.size(); ++i) {
            if (i % 2 == 0) {
                if (nums[i] > nums[i-1]) {
                    swap(nums[i], nums[i-1]);
                }
            }
            else {
                if (nums[i] < nums[i-1]) {
                    swap(nums[i], nums[i-1]);
                }
            }
        }
    }
};

results matching ""

    No results matching ""