Question
Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]….
Example:
Input: nums = [3,5,2,1,6,4]
Output: One possible answer is [3,5,1,6,2,4]
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public void wiggleSort(int[] nums) { if (nums.length <= 1) { return; } boolean sign = true; for (int i = 0; i < nums.length-1; i++) { if (sign) { if (nums[i] > nums[i+1]) { swap(nums, i, i+1); } }else { if (nums[i] < nums[i+1]) { swap(nums, i, i+1); } } sign = !sign; } }
public void swap(int[] nums, int i, int j) { int temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }
|