• Leetcode 324.摆动排序II


    摆动排序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) 额外空间来实现吗?

     

    先对nums排序,copy为nums的拷贝。
    将copy的右半部分放入nums中以1开始, 间隔为2的位置
    将copy的左半部分放入nums中以0开始, 间隔为2的位置
    注意,两次操作都为逆序。否则,由于nums中间的元素相等会出错

     

     1 import java.util.Arrays;
     2 
     3 class Solution {
     4     public void wiggleSort(int[] nums) {
     5         Arrays.sort(nums);
     6         int[] copy = nums.clone();
     7         int index = 1;
     8         for (int i = nums.length - 1; i > (nums.length - 1) / 2; i--) {
     9             nums[index] = copy[i];
    10             index += 2;
    11         }
    12         index = 0;
    13         for (int i = (nums.length - 1) / 2; i >= 0; i--) {
    14             nums[index] = copy[i];
    15             index += 2;
    16         }
    17     }
    18 }
  • 相关阅读:
    数据结构问题集锦
    大作业 开源项目列表
    数据结构问题集锦
    leetcode174
    leetcode152
    经典算法之KMP
    给出一个字符串,将其每一个字符表示成16进制表示,要求每个十六进制为8位数
    作业
    ASP 作业题
    ASP.NET 作业题
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10235216.html
Copyright © 2020-2023  润新知