面试题11
2016-04-28 22:03
393 查看
三色球排序的问题:将相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组。
如:
输入 01012011022;
输出 00001111222;
思想:设定三个指针begin、current、end。初始化begin、current指向第一个,end指向最后一个。
current遍历整个序列,直到current>=end
(1)若current=1,不变;
(2)若current=0,交换begin,current++,begin++;
(3)若current=2,交换end,end–;
如:
输入 01012011022;
输出 00001111222;
思想:设定三个指针begin、current、end。初始化begin、current指向第一个,end指向最后一个。
current遍历整个序列,直到current>=end
(1)若current=1,不变;
(2)若current=0,交换begin,current++,begin++;
(3)若current=2,交换end,end–;
#include<stdio.h> #define N 10 int main() { int A[] = { 1,1,2,1,1,1,1,1,1,1 }; int begin, current, end,t; for (begin = 0, current = 0, end = N - 1; current<end; current++) { if (A[current] == 0) { t = A[current]; A[current] = A[begin]; A[begin] = t; begin++; current++; } else if (A[current] == 1) continue; else if (A[current]== 2) { t = A[current]; A[current] = A[end]; A[end] = t; end--; } } for (int i = 0; i < N; i++) { printf("%d ", A[i]); } return 0; }
相关文章推荐
- 程序员面试经典之链表分割
- 转行程序员4 机器学习 Regularization 纯属敦促自己学习
- 从哪几个方面可以看出一个程序员的好坏
- oc面试 内存泄露
- Java---常用基础面试知识点
- Java---常用基础面试知识点
- 成为Java顶尖程序员 ,看这11本书就够了
- 逗逼面试的经历
- 程序员需要谨记的九大安全编码规则
- 前端面试题目总结
- 老程序员应该记住的 5 件事
- 10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员
- 我经历的IT公司面试及离职感受(转)
- 10条建议分享:帮助你成为与硅谷工程师一样优秀的程序员
- 做一个合格的程序员需要具备哪些素质?
- 以一道union面试题说明大端小端和内存高位低位
- 《招聘一个靠谱的iOS》面试题参考答案(上)
- 优秀程序员的十个习惯
- 面试感悟----一名3年工作经验的程序员应该具备的技能
- 职业规划