280. Wiggle Sort
做题历程:
- 本题应该是第一次做,大概耗时27分钟,而且没有解出。
实话实说,本题的解法并不复杂,但是感觉有点触及我的思维盲点,导致我没法立刻想到答案。 思路大概就是:
- 如果
index是奇数,保证他比前面的数大 - 如果
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]);
}
}
}
}
};