给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] <= nums[1] >= nums[2] <= nums[3]...
简单想法
- 排序
- 双指针,一前一后插入
贪心?猜的
假定前 i 个已经摆动,i + 1 存在奇、偶两种情况
- 奇数 —— 若 nums[i+1] >= nums[i+2] 则符合条件,若 nums[i+1] < nums[i+2],尝试交换后发现 nums[i] < nums[i+2] > nums[i+1] ,完美符合
- 偶数 —— 若 nums[i+1] <= nums[i+2] 则符合条件,若 nums[i+1] > nums[i+2], 尝试交换后发现 nums[i] > nums[i+2] < nums[i+1],完美符合
所以这就构成了归纳法的所需要的要素,代码也就很容易写了——对于 i 和 i + 1,查看是否符合条件,不符合则直接交换