具体思想:
人傻了,没想到还真是这样做的;
波峰波谷直接判断,不满足直接交换i位和i-1位就可以;
具体代码:
class Solution {
public:
void wiggleSort(vector<int>& nums) {
if(nums.size()<2)
return;
if(nums[0]>nums[1])
swap(nums[0],nums[1]);
if(nums.size()==2){
return;
}
bool flag=true;//true 小位,false 大位;
for(int i=2;i<nums.size();i++){
if(flag){
flag=!flag;
//当前是低谷;
if(nums[i]<=nums[i-1])
continue;
swap(nums[i], nums[i-1]);
}else{
flag=!flag;
//当前事高峰;
if(nums[i]>=nums[i-1])
continue;
swap(nums[i], nums[i-1]);
}
}
}
};
/*
3
3 5
3 5 2
3 5 2 1/3 5 1 2
3 5 1 2 6/3 5 1 6 2
3 5 1 6 2 4
*/