面试题7
2016-04-27 16:11
429 查看
给定n个数的数组A,其中超过一半的数为一个定值,在不进行排序的情况下,以最高效的算法找出这个数:int find(int *A,int n)。
#include<stdio.h> #define N 7 /*val为保存的值,time为该值出现的次数; 如果下一个数字与保存的值相等,则time加1; 如果不相等,则time减1; 当time为0时,对val重新赋值。*/ int find(int *A, int n) { int time = 0; int val; for (int i = 0; i < N; i++) { if (time == 0) { val = A[i]; time = time + 1; } else { if (val == A[i]) { time = time + 1; } else { time = time - 1; } } } return val; } int main() { int A = { 1,5,1,1,5,1,2}; int val; val = find(A, N); printf("%d\n", val); return 0; }
相关文章推荐
- 剑指offer之面试题24:二叉搜索树的后序遍历序列
- iOS 面试题总结
- 那些著名或非著名的iOS面试题(上)
- 面试题目总结
- 一些面试题(网上找的)
- 华为面试
- iOS常见面试题总结
- 奋斗吧,程序员——第十八章 山盟虽在,锦书难托
- java面试基础总结
- <<程序员面试宝典>>读书笔记 4
- PHP百度面试题:版本号排序
- 转行程序员2 机器学习 线性回归 Linear Regression II 纯属敦促自己学习
- GEEK学习笔记— —程序员面试宝典笔记(五)
- php面试题及答案
- 面试经历和总结
- android面试题(一)
- 漫谈程序员系列:咦,你也在混日子啊
- 码农小汪-非常不安逸 怎么我写的注解没有自动给我生成时间呢!javadoc 配置起来非常的简单
- 【图灵有聊】说好的安全呢?
- 奋斗吧,程序员——第十七章 年年岁岁花相似,岁岁年年人不同