千万不要被题目所给的栗子给迷惑了,不是一定得找到后半截数字拼接到前半截。
只要满足nums[0] <= nums[1] >= nums[2] <= nums[3]...
.即可。
所以排序后,只是从第二个开始,i和i+1的置换即可。
public class Solution {
public void wiggleSort(int[] nums) {
Arrays.sort(nums);
for (int i = 2; i < nums.length; i += 2) {
int temp = nums[i];
nums[i] = nums[i - 1];
nums[i - 1] = temp;
}
}
}
Given an unsorted array nums
, reorder it in-place such
that nums[0] <= nums[1] >= nums[2] <= nums[3]...
.
For example, given nums = [3, 5, 2, 1, 6, 4]
, one possible answer is [1,
6, 2, 5, 3, 4]
.