2022-4-14 面试高频题

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

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

复制代码
 1 class Solution {
 2     public void wiggleSort(int[] nums) {
 3         Arrays.sort(nums);
 4         int[] arr=nums.clone();
 5         int r=arr.length-1;
 6         for (int i=1;i<arr.length;i+=2){
 7             nums[i]=arr[r];
 8             r--;
 9         }
10         for (int i=0;i<arr.length;i+=2){
11             nums[i]=arr[r];
12             r--;
13         }
14         return;
15     }
16 }
复制代码

思路:摆动排序特征是奇数位置的较大,因次排序之后按照逆序先把较大数排完,再逆序排列其他位置的数,可以保证后排的数字永远比先排的小。

posted on   阿ming  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示