一道百度的面试题解答
2012-06-17 11:45
246 查看
给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数。
要求:空间复杂度O(1),时间复杂度为O(n)。
要求:空间复杂度O(1),时间复杂度为O(n)。
1 bool func(int n) 2 { 3 return (n&1)==0; // n%2 is more expensive 4 } 5 6 void group_oddeven(std::vector<int>& a, bool (*func)(int)) 7 { 8 int i = 0, j = a.size()-1; 9 int buf = 0; 10 while (i < j) { 11 if (!func(a[i])) // odd, move forward 12 { i++; continue; } 13 if (func(a[j])) // even, move backward 14 { j--; continue; } 15 16 std::swap(a[i++], a[j--]); 17 } 18 } 19
相关文章推荐
- 百度一道面试题的PHP解答
- 一道淘汰85%面试者的百度开发者面试题
- 百度面试题及我的解答(4) 补 buffer模板类代码
- 一道百度的面试题--写一个函数,对一个数字如(1000000),每隔3位添加一个','
- 一道微软面试题的解答【镜子问题】
- 一道百度面试题
- 网摘一道百度2014年9月25日面试题(题目是网上看到的,代码是自己写的)
- 一道淘汰85%面试者的百度开发者面试题(更新)
- 一道淘汰85%面试者的百度开发者面试题参考答案
- 2015百度一道面试题引发的思考(shell脚本和网络)
- 一道百度机器学习工程师职位的面试题
- 一道淘汰85%面试者的百度开发者面试题
- [历年IT面试题]百度2014研发类校园招聘笔试题解答
- 一道百度面试题
- 解答Google的一道面试题
- 一道淘汰85%面试者的百度开发者面试题-我就是想知道正确的答案.
- 一道c++面试题解答
- ZZ一道百度面试题:求数组中出现次数超过一半的数
- 2014百度研发类笔试题【附详细解答及面试题分享】
- 解答Google的一道面试题 .