Wiggle Sort I & II
下面这两题 googe 都很喜欢。
public class Solution {
public void wiggleSort(int[] nums) {
if(nums == null || nums.length < 2) return;
boolean findBigger = true;
for(int i = 1; i < nums.length; i++){
if(findBigger){
if(nums[i] < nums[i - 1]){
swap(nums, i, i - 1);
}
} else {
if(nums[i] > nums[i - 1]){
swap(nums, i, i - 1);
}
}
findBigger = !findBigger;
}
}
private void swap(int[] nums, int a, int b){
int temp = nums[a];
nums[a] = nums[b];
nums[b] = temp;
}
}关于这题,这个帖子写的非常详尽,里面用到了 virtual indexing 的思想
A(i) = nums[(1+2*(i)) % (n|1)]
Last updated