Wiggle Sort II Problem LeetCode

Problem:

Given an integer array nums, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]....

You may assume the input array always has a valid answer.

 Example 1:

Input: nums = [1,5,1,1,6,4]
Output: [1,6,1,5,1,4]
Explanation: [1,4,1,5,1,6] is also accepted.

Example 2:

Input: nums = [1,3,2,2,3,1]
Output: [2,3,1,3,1,2]

 Constraints:

  • 1 <= nums.length <= 5 * 104
  • 0 <= nums[i] <= 5000
  • It is guaranteed that there will be an answer for the given input nums.

 Follow Up: Can you do it in O(n) time and/or in-place with O(1) extra space?


Solution 1:
Method2:
  • sort the elements and find the median, operate to maintain the following constraints
  • the numbers less than median go to the last even index
  • the numbers greater than median go to the first odd index
  • the median goes to the remaining index
  • iterate through out the array and check the above constraint to swap the element to the correct position
  • After selecting the median element, which is 5 in this example, we continue as the following
  • Mapped_idx[Left] denotes the position where the next smaller-than median element  will be inserted.
  • Mapped_idx[Right] denotes the position where the next larger-than median element  will be inserted.
Solution 2:

No comments:

Post a Comment