zoukankan      html  css  js  c++  java
  • Java实现 LeetCode 324 摆动排序 II

    324. 摆动排序 II

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

    示例 1:

    输入: nums = [1, 5, 1, 1, 6, 4]
    输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6]
    示例 2:

    输入: nums = [1, 3, 2, 2, 3, 1]
    输出: 一个可能的答案是 [2, 3, 1, 3, 1, 2]
    说明:
    你可以假设所有输入都会得到有效的结果。

    进阶:
    你能用 O(n) 时间复杂度和 / 或原地 O(1) 额外空间来实现吗?

    class Solution {
           public void wiggleSort(int[] nums) {
            int max = Integer.MIN_VALUE;
            for (int num : nums) {
                max = Math.max(num, max);
            }
            int[] tmp = new int[max + 2];
            for (int num : nums) {
                tmp[num]++;
            }
            int a = 0, b = 1, i;
            for (i = tmp.length - 1; i > 0; i--) {
                while (tmp[i] > 0 && b < nums.length) {
                    nums[b] = i;
                    b += 2;
                    tmp[i]--;
                }
                if (b >= nums.length) {
                    break;
                }
            }
    
            while (i >= 0) {
                while (tmp[i] > 0 && a < nums.length) {
                    nums[a] = i;
                    a += 2;
                    tmp[i]--;
                }
                if (a >= nums.length) {
                    break;
                }
                if (tmp[i] > 0) {
                    for (; tmp[i] > 0 && a < nums.length; tmp[i]--) {
                        nums[a] = i;
                        a += 2;
                    }
    
                }
                i--;
            }
        }
    }
    
  • 相关阅读:
    131.著作权
    130.专利权
    idea新用法
    map的put和putIfAbsent使用
    netty的option和childOption
    Java8 lam。。。表达式
    protobuf学习
    protobuf生成
    idea调试
    spring,mapper的参数
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075875.html
Copyright © 2011-2022 走看看