Leetcode 324.摆动排序II
2024-09-08 12:58:25
摆动排序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中间的元素相等会出错
import java.util.Arrays; class Solution {
public void wiggleSort(int[] nums) {
Arrays.sort(nums);
int[] copy = nums.clone();
int index = 1;
for (int i = nums.length - 1; i > (nums.length - 1) / 2; i--) {
nums[index] = copy[i];
index += 2;
}
index = 0;
for (int i = (nums.length - 1) / 2; i >= 0; i--) {
nums[index] = copy[i];
index += 2;
}
}
}
最新文章
- SQLServer数据库中创建临时表
- BZOJ3171 Tjoi2013 循环格
- js optiontransferselect
- 演义江湖PC端意见汇总
- 巧用FileShare解决C#读写文件时文件正由另一进程使用的bug
- Render Texture的使用(截取rendertexture的一帧到Texture2D)
- favicon.ico显示,favicon显示,favicon图标显示
- oracle excute immediate 单引号转义
- Why SignalR does not use WebSockets?
- vsftp之虚拟用户
- HDU 2795 Billboard 线段树,区间最大值,单点更新
- 移动端和PC端弹出遮罩层后,页面禁止滚动的解决方法及探究
- leanote使用本地账户时,去掉待同步的小红点
- 【WEB】带边框的网页页面实现
- vue----计算与监听属性
- 早期nginx tcp代理(基于patch实现)
- Nmap版本检测
- OpenResty 最佳实践 1
- Oracle安全之Oracle日志挖掘
- MongoDB操作数据库的几个命令(自己用)