转换数组使奇数位为奇数 偶数位为偶数
2016-01-17 13:48
211 查看
设定 odd even两个标志位为odd为1,even为0,然后从最后一位开始看,如果说最后一位为偶数,就和even位交换,even自增2,如果是奇数,则和odd位交换,odd自增2,一直到二者其中一个越界位置。 解法比较奇特。
#include<iostream> #include <hash_map> #include <algorithm> using namespace std; //改变数组,令其奇数位置存储奇数,偶数位置存储偶数 //要求空间复杂度为O(1),时间复杂度为O(n) int a[]={9,6,5,4,3,2,1,8}; void ChangeArray(int len) { int end=a[len-1]; int even=0; int odd=1; while(even<len&&odd<len) { if(a[len-1]%2==0) { std::swap(a[len-1],even); even+=2; } else { std::swap(a[len-1],odd); odd+=2; } } } int main() { ChangeArray(8); return 0; }
相关文章推荐
- ubuntu修改grub,删除多余启动项
- windows10-桌面图标不见了,资源管理器的桌面中可以看到??
- 棋盘覆盖问题
- onBackPressed()的用法
- 微信服务号报错{errmsg:config: invalid signature}
- 浅谈操作系统进程的引出
- 使用字符设备驱动
- shell脚本的结构和4种执行方式
- Xcode7 创建HTTP网络请求时出现bug
- 近200篇机器学习及深度学习的资料分享
- 【AngularJS】—— 1 初识AngularJs
- 代码高亮插件SyntaxHighlighter
- SpringMvc (二) 通过URL限定:URL表达式/模拟请求方法/注解绑定方法参数/入参方式
- 《Effective Modern C++》翻译--条款4:了解如何查看推导出的类型
- 《Effective Modern C++》翻译--条款4:了解如何查看推导出的类型
- 日志分析-Web
- 查看系统(硬件)信息
- p243 7题
- 4.2 不确定性推理
- wpa_supplicant工具