摆动排序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;
}
}
}

最新文章

  1. SQLServer数据库中创建临时表
  2. BZOJ3171 Tjoi2013 循环格
  3. js optiontransferselect
  4. 演义江湖PC端意见汇总
  5. 巧用FileShare解决C#读写文件时文件正由另一进程使用的bug
  6. Render Texture的使用(截取rendertexture的一帧到Texture2D)
  7. favicon.ico显示,favicon显示,favicon图标显示
  8. oracle excute immediate 单引号转义
  9. Why SignalR does not use WebSockets?
  10. vsftp之虚拟用户
  11. HDU 2795 Billboard 线段树,区间最大值,单点更新
  12. 移动端和PC端弹出遮罩层后,页面禁止滚动的解决方法及探究
  13. leanote使用本地账户时,去掉待同步的小红点
  14. 【WEB】带边框的网页页面实现
  15. vue----计算与监听属性
  16. 早期nginx tcp代理(基于patch实现)
  17. Nmap版本检测
  18. OpenResty 最佳实践 1
  19. Oracle安全之Oracle日志挖掘
  20. MongoDB操作数据库的几个命令(自己用)

热门文章

  1. hihocoder1860 最大异或和
  2. Genymotion的安装与设置
  3. iOS Block的本质(一)
  4. 异步 ThreadPool
  5. (三)mybatis之对Hibernate初了解
  6. 在ABAP里模拟实现Java Spring的依赖注入
  7. 最完整的台达PLC培训教程(沈阳工大)学习笔记1
  8. Kafka-broker配置说明
  9. 关于用终端运行php来测试推送的问题
  10. 一张图看懂苹果MacBook所有屏幕分辨率