博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Locked] Wiggle Sort
阅读量:4947 次
发布时间:2019-06-11

本文共 693 字,大约阅读时间需要 2 分钟。

Wiggle Sort

Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] <= nums[3]....

For example, given nums = [3, 5, 2, 1, 6, 4], one possible answer is [1, 6, 2, 5, 3, 4].

分析:

  序列单调性问题,本题要求在不开额外数组的情况下使得序列呈现增减增减的规律

解法:

  遍历数组相邻对,遇到不符合要求的,调换位置

证明:

  充分性,数学归纳法,之前的序列满足题目要求,当第k个对呈x规律,若第k+1个对呈y规律,满足要求;若第k+1个对呈x规律,调换位置,则呈y规律,满足要求;

  必要性,因为题目只要求给出一个可行解,所以无需具备必要性。

代码:

void wiggleSort(vector
&a) { bool inc = true; for(int i = 0; i < a.size() - 1; i++) { if((a[i + 1] < a[i] && inc) || (a[i + 1] > a[i] && !inc)) swap(a[i], a[i + 1]); inc = !inc; } return;}

 

 

转载于:https://www.cnblogs.com/littletail/p/5197895.html

你可能感兴趣的文章
【计算机组成原理】 计算机系统概述
查看>>
【操作系统】 文件管理
查看>>
【计算机组成原理】 存储系统
查看>>
【操作系统】 输入/输出(I/O)管理
查看>>
【计算机组成原理】 中央处理器
查看>>
【计算机组成原理】 数据的表示和运算
查看>>
【计算机组成原理】 输入/输出系统
查看>>
【计算机组成原理】 指令系统
查看>>
【计算机组成原理】 总线
查看>>
Azure 配置 PostgreSQL streaming replication
查看>>
mysql 安装卸载自动化脚本
查看>>
关于windou环境下使用http或者ftp搭建网络hu共享
查看>>
关于华为服务器 双路E52620安装系统时遇到的问题
查看>>
大数据培训第一天总结
查看>>
Neo4j (3.3.9)的学习之路(1)
查看>>
h5-面试题
查看>>
顶部下拉展示页面
查看>>
arr.push('')
查看>>
CSS3 counter计数器
查看>>
文字超出省略
查看>>