324. 摆动排序 II(待完成)

给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。

你可以假设所有输入数组都可以得到满足题目要求的结果。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/wiggle-sort-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

计数排序

class Solution {
    public void wiggleSort(int[] nums) {
        int[] cnt = new int[5001];
        for (int num : nums) {
            cnt[num]++;
        }

        int idx = nums.length % 2 == 0 ? nums.length - 2 : nums.length - 1;

        for (int i = 0; i <= 5000; ++i) {
            while (cnt[i]-- > 0) {
                nums[idx] = i;
                idx -= 2;
                if (idx < 0) {
                    idx = nums.length % 2 == 0 ? nums.length - 1 : nums.length - 2;
                }
            }
        }
    }
}
posted @ 2021-12-17 12:19  Tianyiya  阅读(69)  评论(0)    收藏  举报