Wiggle Sort

Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....

For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4].

Solution

public class Solution {


    public void wiggleSort(int[] nums) {
        int index = 0;
        boolean swicth = true;
        while (index < nums.length - 1) {
            if ((swicth && nums[index] > nums[index + 1]) || (!swicth && nums[index] < nums[index + 1])) {
                swap(nums, index, index + 1);
            }

            swicth = swicth ? false : true;
            index++;
        }
    }

    private void swap(int[] nums, int start, int end) {
        int temp = nums[start];
        nums[start] = nums[end];
        nums[end] = temp;
    }
}

results matching ""

    No results matching ""