public void wiggleSort(int[] nums) {
Arrays.sort(nums);
for(int i = 0; i < nums.length/2; ++i ) {
int temp = nums[i];
nums[i] = nums[nums.length - i - 1];
nums[nums.length - i - 1] = temp;
}
int half = nums.length / 2;
int[] large = Arrays.copyOfRange(nums, 0, half);
int[] small = Arrays.copyOfRange(nums, half, nums.length);
for (int i = 0, j = 0, k = 0; i < nums.length; i++) {
if (i % 2 == 0)
nums[i] = small[j++];
else
nums[i] = large[k++];
}
}
Runtime: 3 ms, faster than 83.19% of Java online submissions for Wiggle Sort II.
Memory Usage: 41.8 MB, less than 66.38% of Java online submissions for Wiggle Sort II.
def wiggleSort(self, nums):
nums.sort()
half = len(nums[::2])
nums[::2], nums[1::2] = nums[:half][::-1], nums[half:][::-1]
Runtime: 160 ms, faster than 89.50% of Python3 online submissions for Wiggle Sort II.
Memory Usage: 17.1 MB, less than 73.18% of Python3 online submissions for Wiggle Sort II.
중요한 아이디어는
미디언을 구한 후 ==> median보다 작은 것들을 뒤의 even index에 넣고, median보다 큰 것들은 앞의 odd index들에다가 넣는 방식.