324. Wiggle Sort II

JJ·2021년 1월 25일
0

Algorithms

목록 보기
83/114
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.

https://leetcode.com/problems/wiggle-sort-ii/discuss/77682/Step-by-step-explanation-of-index-mapping-in-Java

중요한 아이디어는
미디언을 구한 후 ==> median보다 작은 것들을 뒤의 even index에 넣고, median보다 큰 것들은 앞의 odd index들에다가 넣는 방식.

0개의 댓글