微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字
/*******************************************************************************
文 件 名 : test100.cpp
实现功能 : 微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字补充下题目 意思:我这里每个数字 都是个阿拉伯数字,是1位的,是1到9之间的但是有1百万个这样的数字 比如 12345678912 是11个这样的数字
实现思路 : 定义9个数组,记录1-9的出现的数字做标记,出现一次则,对应数组加1,超过2次,在下次循环直接结束,这样一共直到记录8个数字后,直接打印第9个数字,就是一共只会出现2次的数字了
作 者 : jernymy
版 权 : <Copyright(C) ... jernymy.>
日 期 : 2011-07-28
版 本 : V1.0
*******************************************************************************/#include "stdio.h"
#include "stdlib.h" // srand
#include "time.h" // time
#include "string.h" // memset// 最大的数据是100万, 1000000
#define MAX_NUM 1000*1000// 出现频率的个数
#define OVER_VAR 2// 记录1-9这几个数字出现的次数,是否出现超过2次,
// 如果超过2次可以不用判断,初始化为0
unsigned char g_abyNumAry[10];// 记录总共出现超过3次的数字的个数,当超过7个时,即为8时。
// 则可以直接打印出没有出现超过2次的那个数字,就一定是公出现2次的数字了。
unsigned char g_nCount = 0;int main(void)
{int nIdx;int nData;time_t nCurTime; srand(time(&nCurTime));memset(g_abyNumAry, 0, sizeof(g_abyNumAry));for (nIdx = 0; nIdx < MAX_NUM; nIdx++){nData = rand()%9 + 1; // 随机数从1到9,测试专用,jernymy from 1-9printf("%d ", nData); // 打印该随机数字// 此数字出现次数大于2次,则退出次循环if (g_abyNumAry[nData] > OVER_VAR){continue;}// 此数字出现1次,在大于2次时,就对总个数加1if (++g_abyNumAry[nData] > OVER_VAR){g_nCount++;}// 当有8个数字出现的个数均超过2次,// 那么剩下的那个数字一定就是要求的了if (g_nCount == 8){printf("\nfound only 2 num: ");for (nIdx = 1; nIdx < 10; nIdx++){if (g_abyNumAry[nIdx] < (OVER_VAR+1)){// jernymy 此数就是我们要找的那个了printf("%d\n", nIdx);}}break;} }return 0;
}
微软面试题:有100万个数字(1到9),其中只有1个数字重复2次,如何快速找出该数字相关推荐
- 快速找出数组中出现次数超过一半的数字
"只要不是特别大的内存开销,时间复杂度比较重要.因为改进时间复杂度对算法的要求更高." --吴斌(NVidia,Graphics Architect) 同样是查找,如果是顺序查找需 ...
- 找出那个数字出现3次的数字
找出那个数字出现3次的数字,简单的C++ #include <stdio.h> #define COUNT 3 #define ARRAY_SIZE(_) (sizeof (_) / si ...
- 快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值
我觉得写得很清晰,希望没有侵犯作者的著作权,原文地址http://blog.csdn.net/hackbuteer1/article/details/6699642 快速找出一个数组中的两个数字,让这 ...
- 搜寻吉祥数,在给定的范围内,例如1~99999,找出吉祥数字,满足的条件为:全部数字必须由6或者8构成,如66666,66668,668,…
题目:在给定的范围内,例如1~99999,找出吉祥数字,满足的条件为:全部数字必须由6或者8构成,如66666,66668,668,- 1.一开始想的很杂,考虑了效率:把要查找的数转化成String再 ...
- java编程找出吸血鬼数字,Java 找到四位数的所有吸血鬼数字 基础代码实例
Java 找出四位数的所有吸血鬼数字 基础代码实例 /** * 找出四位数的所有吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最 ...
- bat从数组中找出相同数字并删除_找到所有数组中消失的数字
题目描述 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次. 找到所有在 [1, n] 范围之间没有出现在数组中的数字. ...
- bat从数组中找出相同数字并删除_全网把Map中的hash()分析的最透彻的文章,别无二家...
原文地址:https://mp.weixin.qq.com/s/qCHkzs4JPOipB-ZzqrfbeQ 作者: Hollis 你知道HashMap中hash方法的具体实现吗? 你知道HashTa ...
- string 找出所有数字 index_【一天一大 lee】单调递增的数字 (难度:中等) Day20201215...
20201215 题目: 给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增. (当且仅当每个相邻位数上的数字 x 和 y 满足 ...
- java编程找出吸血鬼数字,找出四位數的所有吸血鬼數字(JAVA)
/** * 找出四位數的所有吸血鬼數字 * 吸血鬼數字是指位數為偶數的數字,可以由一對數字相乘而得到,而這對數字各包含乘積的一半位數的數字,其中從最初的數字中選取的數字可以任意排序. * 以兩個0結尾 ...
最新文章
- JavaScript多线程之HTML5 Web Worker
- hadoop环境搭建之伪分布集群环境搭建(单节点)
- 使用Python解压zip、rar文件
- ta是什么职位_想好了吗~你为什么来博智林
- CLOUD配置审批流发消息
- java 接口api设计的注意事项_Java接口设计原则
- 蚂蚁集团:中签号码共有701696个
- python定位相邻节点_Python selenium —— 父子、兄弟、相邻节点定位方式详解
- 初识TensorFlow
- 2014清华计算机系直博名单,2014年清华大学外校推免名单.pdf
- docker 重启gitlab_gitlab从入门到绝望
- matlab无法复制图形到剪切板,cad图纸无法复制到剪贴板如何解决
- 从0到1搭建kubernetes集群
- outlook自动保存html,outlook怎么编辑HTML源文件
- 在docker里跑gpgpusim
- 怎么才能有写程序的思路
- 基于javaweb的酒店管理系统(java+ssm+layui+mysql)
- cxzday8-字符串作业
- 【如何成为SQL高手】第二关:表记录的插入、更新、删除
- Swing错鸡包 特殊历史脚本