重新排序一个序列
来源:互联网 发布:华兴资本知乎 编辑:程序博客网 时间:2024/06/07 16:22
question:
nums
, reorder it such that nums[0] < nums[1] > nums[2] < nums[3]...
.Example:
Given nums = [1, 5, 1, 1, 6, 4]
, one possible answer is [1, 4, 1, 5, 1, 6]
.
my solution:
void wiggleSort(vector<int>& nums){
if (nums.empty()) {
return;
}
int n = nums.size();
// Step 1: Find the median
vector<int>::iterator nth = next(nums.begin(), n /2);
nth_element(nums.begin(), nth, nums.end());
int median = *nth;
// Step 2: Tripartie partition within O(n)-time & O(1)-space.
auto m = [n](int idx) {return (2 * idx +1) % (n | 1); };
int first = 0, mid =0, last = n - 1;
while (mid <= last) {
if (nums[m(mid)] > median) {
swap(nums[m(first)], nums[m(mid)]);
++first;
++mid;
}
else if (nums[m(mid)] < median) {
swap(nums[m(mid)], nums[m(last)]);
--last;
}
else {
++mid;
}
}
}
阅读全文
0 0
- 重新排序一个序列
- 重新排序一个序列
- 两个排好序的数组重新排序为一个新数组
- C#WinForm中DataGridView重新绑定时按照刷新前排序列排序
- 中文搜索引擎重新排序
- Delphi DBGrid重新排序
- list重新排序
- 重新理清冒泡排序
- PHP 数组重新排序
- ios 拖动重新排序
- 无限分类---重新排序
- C# DATATABLE 重新排序
- excel重新排序
- 重新对DataTable排序
- C语言求一个序列的字典序排序
- C# Datatable排序重新排序
- 任意输入一个字符串,将其中的字符按ASCII码值从小到大重新排序
- 将string的各个字符按照ASCII排序后,重新生成一个string的代码
- @InitBinder注解 解决form表单向springmvc传递多个对象参数
- 谨以此文纪念一下这个特别的时刻
- python 获取CPU、内存、硬盘、进程状态信息 代码
- shell 1>&2 2>&1 &>filename重定向的含义和区别
- Java学习笔记_15
- 重新排序一个序列
- Hololens开发手记--Unity之Persistence
- V9版的浏览记录 感谢原作者分享
- 表单提交
- 动态概率约束与动态事件约束
- 从【Meteor】想到【JAVA】的【REALTIME-ORM】再到【Speedment】
- 线程锁技术
- Android系统移植与调试之------->如何修改开机动画的两种方式剖析
- maven项目的配置和创建