Wiggle Sort II

Given an unsorted array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3].... Example: Given nums = [1, 5, 1, 1, 6, 4], one possible answer is [1, 4, 1, 5, 1, 6].

  • Time: O(nlogn)
  • Space: O(1)
public void wiggleSort(int[] nums) {
    Arrays.sort(nums);
    int n = nums.length;
    int[] temp = Arrays.copyOf(nums, n);
    int mid = n % 2 == 0 ? n / 2 - 1 : n / 2;
    int index = 0;
    for (int i = 0; i <= mid; i++) {
        nums[index] = temp[mid - i];
        if (index + 1 < n)
            nums[index + 1] = temp[n - i - 1];
        index = index + 2;
    }
}

results matching ""

    No results matching ""