508-摆动排序

给你一个没有排序的数组,请将原数组就地重新排列满足如下性质

nums[0] <= nums[1] >= nums[2] <= nums[3]....

注意事项

请就地排序数组,也就是不需要额外数组

样例

给出数组为 nums = [3, 5, 2, 1, 6, 4] 一种输出方案为 [1, 6, 2, 5, 3, 4]

标签

排序 快速排序 数组 谷歌

方法一(快排 + 交换,时间复杂度O(nlgn))

先将数组排序,然后交换第2位和第3位,第3位和第4位...

code

class Solution {
public:
/**
* @param nums a list of integer
* @return void
*/
void wiggleSort(vector<int>& nums) {
// Write your code here
int size = nums.size();
if (size <= 0) {
return;
}
sort(nums.begin(), nums.end()); for (int i = 1; i < size - 1; i += 2) {
swap(nums[i], nums[i + 1]);
}
}
};

方法二(找规律 + 交换,时间复杂度O(n))

  • 当i为奇数时,nums[i] >= nums[i - 1]
  • 当i为偶数时,nums[i] <= nums[i - 1]
  • 那么只要对每个数字,根据其奇偶性,选择是否与上一个数交换即可

code

class Solution {
public:
/**
* @param nums a list of integer
* @return void
*/
void wiggleSort(vector<int>& nums) {
// Write your code here
int size = nums.size();
if (size <= 0) {
return;
} for (int i = 1; i < size; i += 2) {
if ((i % 2 == 1 && nums[i] < nums[i - 1]) || (i % 2 == 0 && nums[i] > nums[i - 1])) {
swap(nums[i], nums[i - 1]);
}
}
}
};

最新文章

  1. JAVA 如何把request请求的参数,快速放到model对象中
  2. Sharepoint创建List
  3. [你必须知道的NOSQL系列]专题一:MongoDB快速入门
  4. CF 672C Recycling Bottles[最优次优 贪心]
  5. FreeBSD 9.1安装KMS 这是一个伪命题###### ,9....
  6. TYVJ1000 A+B problem [存个高精模板]
  7. struts 2.0部署
  8. 《REWORK》启示录 发出你的心声——程序员与身体
  9. java网络编程之UDP通讯
  10. apache开源项目--Camel
  11. 2014年10月16号--for语句实例
  12. 2015.9.11模拟赛 codevs 4159【hzwer的迷の数列】
  13. ios开发必备第三方库
  14. C#学习日志 day7 --------------LINQ与Lamda语句的初步尝试以及XML的生成
  15. lua脚本中字符串分割split
  16. AFNetworing进行POST上传 分类: ios技术 2015-04-01 17:03 73人阅读 评论(0) 收藏
  17. OC内存管理-OC笔记
  18. PAT甲级1068 Find More Coins【01背包】
  19. static全局变量与普通全局变量的区别,static局部变量与普通局部变量的区别,static函数与普通函数的区别
  20. android include使用[转]

热门文章

  1. Node.js http.createServer 简单服务配置
  2. 树莓派GPIO控制LED彩灯
  3. Linux了解一下
  4. C# 对DataTable的简单操作
  5. vue中-webkit-box-orient:vertical打包放到线上不显示
  6. 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈
  7. 20155216 2016-2017-2 《Java程序设计》第七周学习总结
  8. 20155222 2016-2017-2 《Java程序设计》第4周学习总结
  9. Caliburn.Micro - Getting Started - Introduction
  10. spring_cloud多个微服务访问时偶发forward_error问题