zoukankan      html  css  js  c++  java
  • leetcode 324. 摆动排序 II java

    题目:

    给定一个无序的数组 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]
    说明:
    你可以假设所有输入都会得到有效的结果。

    解题:

    class Solution {
    
        /**
         * 先排序再穿插
         * O(nlogn)+O(n)=O(nlogn)
         *
         * @param nums
         */
        public void wiggleSort(int[] nums) {
            //排序
            Arrays.sort(nums);
            int len = nums.length, i = 0;
            int[] smaller = new int[len % 2 == 0 ? len / 2 : (len / 2 + 1)], bigger = new int[len / 2];
            //复制,将smaller与bigger数组进行赋值
            System.arraycopy(nums, 0, smaller, 0, smaller.length);
            System.arraycopy(nums, smaller.length, bigger, 0, len / 2);
            //穿插
            for (; i < len / 2; i++) {
                nums[2 * i] = smaller[smaller.length - 1 - i];
                nums[2 * i + 1] = bigger[len / 2 - 1 - i];
            }
            if (len % 2 != 0) nums[2 * i] = smaller[smaller.length - 1 - i];
        }
    }
  • 相关阅读:
    matplotlib种类
    matplotlib安装
    Python input保证输入为int类型
    centos7 安装 smplayer
    matplotlib与numpy
    Windows系统pip安装whl包
    python3打开winodows文件问题
    centos7 python3 pip
    Python实战171203统计
    Python实战171202元组访问
  • 原文地址:https://www.cnblogs.com/yanhowever/p/11794480.html
Copyright © 2011-2022 走看看