音乐TV2015校园招聘A第二大发行量(对中国科学院大学站)
标题叙述性说明:鉴于阵列A,尺寸n,数组元素1至n数位,但是,一些数字多次出现,有些数字不出现。请设计算法和程序。统计数据不会出现什么。什么号码多次出现。
您可以O(n)时间复杂度,O(1)求下完毕么?(思路和代码)
主要思路:四次遍历。
第一遍历:确定是否所有数字都一样,比如出现n个1或者n个2的情况。若一样。直接输出结果。否则进入第二次遍历。
(这是我看了參考后加入的)
第二次遍历:对全部]i运行A[i] = A[i] *n
第三次遍历:对全部i运行++A[A[i]/n]
第四次遍历:对全部i运行A[i] = A[i] % n
这样,A[i]的值为i在数组中出现的次数。
解释:
1、因为第一次遍历。保证了后序步骤中随意元素出现的次数不可能超过n。
2、先运行A[i]=A[i]*n,让取余的时候A[i]本身的值不会对i出现的次数产生影响。
3、然后运行++A[A[i]/n]。对A[i]本来的位置不断添加1,但绝不会超过n。所以每一个i出现的次数,就是A[i]对n取余。
代码例如以下:
void repetitions(int a[], int n)
{
int i = 1;
int frequencey = 0;
int element;
int temp; temp = a[1];
for(i = 2; i <= n; ++i){
if(a[i] != temp)
break;
} if(i == n + 1 && a[i-1] == temp)
{
cout << temp << "出现了" << n << "次,其余数字没有出现" << endl;
return;
} for(i = 1; i <= n; ++i)
a[i] *= n;
for(i = 1; i <= n; ++i){
++a[a[i]/n];
} for(i = 1; i <= n; ++i){
cout << i << "出现了" << a[i] % n << "次" << endl;
}
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
音乐TV2015校园招聘A第二大发行量(对中国科学院大学站)的更多相关文章
- 乐视TV2015校园招聘A第二个大的发行量(of中国Academy科学大学站)
		标题叙述性说明:鉴于阵列A,尺寸n,数组元素1至n数字.但是一些数字多次出现.有些数字不出现.请设计算法和程序,统计数据不会出现什么.什么号码多次出现.在O(n)时间复杂度,O(1)在完成它的空间复杂 ... 
- google2013校园招聘笔试题(全国)
		google2013校园招聘笔试题 1. 单项选择题1.1如果把传输速率定义为单位时间内传送的信息量(以字节计算)多少.关于一下几种典型的数据传输速率:1.使用USB2.0闪存盘,往USB闪存盘上拷贝 ... 
- 我是怎么和SAP结缘的 - Jerry的SAP校园招聘之路
		2006年9月,结束了一年的北京中科院实习后,我回到了电子科技大学,此时已经是研三上学期了.有着"金九银十"之称的秋季校园招聘正式开始了. 准备好了简历后,Jerry也加入了浩浩荡 ... 
- 九度OJ 1525 子串逆序打印 -- 2012年Google校园招聘笔试题目
		题目地址:http://ac.jobdu.com/problem.php?pid=1525 题目描述: 小明手中有很多字符串卡片,每个字符串中都包含有多个连续的空格,而且这些卡片在印刷的过程中将字符串 ... 
- 2018春季校园招聘笔经面经合集:Java开发岗
		2018春季校园招聘笔经面经合集:Java开发岗 以下为精选面经: 美团外卖配送部后台开发面经 nowcoder.com/discuss/76 春招总结,干货满满 nowcoder.com/discu ... 
- java实现求数组中元素第二大的元素
		/** * 找出数组中数第二大的值 * @param array * @date 2016-9-25 * @author shaobn */ public static void getMethod_ ... 
- 2014 WAP校园招聘笔试题
		2014 WAP校园招聘笔试题 Problem's Link: http://www.doc88.com/p-6751117015483.html WAP公司笔试题 We are planning ... 
- c# 各种排序算法+找第二大的数+句子单词反转
		冒泡排序 // 冒泡排序 bubble sort public static int[] BubbleSort(int []array) { bool isContinue = true; ; i & ... 
- C语言练习:第二大整数
		问题描述 编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束.然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来.说明:(1)0表示输入结束,它本身并不计入这组整数 ... 
随机推荐
- SimpleDateFormat使用特定的解释
			public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的详细类. 它同意格式化 ... 
- SQL Server 2005,2008 正则表达式 替换函数应用详解
			CREATE function dbo.regexReplace ( @source ntext, --原字符串 ), --正则表达式 ), --替换值 , --是否是全局替换 --是否忽略大小写 ) ... 
- HTML高级标签(2)————窗体分帧(1)————分帧演示
			我们能够简单的编写一个多帧的窗体,而且能够随意的划分窗体区域. <frameset rows="*,*,*"> <frameset cols="*,*& ... 
- opencv-形态处理
			开运算 (Opening) 原理摘自:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/opening_closi ... 
- Cocos2d-X中间应用
			(层)Laye:与球员打交道响应事件Node子类. 不同的场景,层通常包括直接在屏幕上呈现的内容.而且能够接受用户的输入事件.包括触摸,加速度计和键盘输入等. 我们须要在层中加入精灵,文本标签或者其它 ... 
- ASP.NET Identity
			使用ASP.NET Identity实现基于声明的授权 阅读目录 走进声明的世界 创建并使用声明 基于声明的授权 使用第三方来身份验证 小节 在这篇文章中,我将继续ASP.NET Identity 之 ... 
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
			原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ... 
- Unity3d 镜面反射 vertex and frag Shader源代码
			Unity3d 镜面反射 网上能找到的基本上是固定管道或表面渲染的shader. 特此翻译为顶点.片段渲染的Shader, 本源代码仅仅涉及shader与cs部分. Editor部分使用NGUI绘制的 ... 
- Jquery 分页插件 Jquery Pagination
			Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ... 
- CodeForces 277A Learning Languages (并检查集合)
			A. Learning Languages time limit per test:2 seconds memory limit per test:256 megabytes The "Be ... 
