最后更新
二刷
这个题做得真蠢。上来想的复杂了,想的是quick sort之类的,然后一个一个交换。
实际上直接交换就行。。没啥特别的。
回头看一刷也是同样的思考过程= =宿命论啊。。
Time: O(n)
Space: O(1)
public class Solution {public void wiggleSort(int[] nums) {if (nums.length <= 1) return;for (int i = 1; i < nums.length; i++) {if (i % 2 == 0 && nums[i] > nums[i-1]) {swap(i, i-1, nums);} else if (i % 2 != 0 && nums[i] < nums[i-1]) {swap(i, i-1, nums);}}return;}public void swap(int l, int r, int[] nums) {int temp = nums[l];nums[l] = nums[r];nums[r] = temp;}
}
一刷
这个题一开始蠢了,先SORT了一下,然后IN-PLACE做了半天。。
发现直接greedy就可以。。。。。。
public class Solution {public void wiggleSort(int[] nums) {if(nums.length<=1) return;for(int i = 0; i < nums.length-1;i++){if(i%2==0){if(nums[i] > nums[i+1]){swap(nums,i,i+1);}}else{if(nums[i] < nums[i+1]){swap(nums,i,i+1);}}}}public void swap(int[] nums, int i, int j){int temp = nums[i];nums[i] = nums[j];nums[j] = temp;}
}