有一个random number generator,是生成真实的随机数,而不是伪随机数,这个东西会生成几千亿个32位整数,打印出现次数前100的整数。
方法一:由于数的范围已经确定,采用计数排序的方法计算出0-2^31-1间数的出现次数,如下代码所示:
int[] array=new int[2^31-1];
for i=0 to n-1 do {
array[a[i]]++;
}
时间复杂度0(n),空间复杂度0(n)
接着问题就变成寻找数组array中前100大的数,可以采用类似快速排序的方式,先找第100大的数e的位置l,然后使用快速排序的partion方法重构数组,使得l前面的数都小于e,l后面的数都大于e,如下:
int radomize_select(int[] array, p, r, int i) { // 找第i大的数的位置
if(p==r){ // 递归出口
return array[p];
}
q=radomize_partion(A,p,r);
k<-q-p+1;
if(i<=k){
return radomize_select(array,p,q,i);
}
else{
return radomize_select(array,p,q,i-k);
}
}
时间复杂度0(n),空间复杂度0(1)
void getResult(){
int l=radomize_select(array, 0, n-1, 100);
q=partion(l); //快速排序的partion
for i=q to n-1 {
输出 array[i];
}
}
时间复杂度0(n),空间复杂度0(1)
综上,时间复杂度0(n),空间复杂度0(n)
方法二:采用哈希表, key is i, value is the count of i
Hashtable table=new Hashtable();
for i=0 to 2^31-1 do {
int count=0;
if(table.get(i)==null){
count++;
}
else{
count=++(table.get(i));
}
table.put(i,count);
}
剩下的方法和上面一样,略
时间复杂度0(n),空间复杂度>0(n)
对比以上2种方法,时间复杂度一样,但方法一的孔间复杂度稍微小于方法二,哈希表的空间一般情况下比普通的数组的空间要大
分享到:
相关推荐
总而言之,Google面试题集锦是一个宝贵的资源库,不仅包含了丰富的知识点,还提供了实用的面试技巧。它对于有志于进入顶尖科技公司的IT从业者来说,是一份不可或缺的参考资料。通过研究这些面试题,应聘者可以更好地...
11谷歌面试题精讲
程序员面试题精选 C++ 算法 微软 google 程序员面试题精选 C++ 算法 微软 google
微软公司面试人员的面试题解答,google微软等大公司面试题,软件架构师的设计。
### Google面试题解析 #### 一、一辆校车能装下多少个高尔夫球? **职位:** 产品经理 **解析:** 这类问题考察应聘者的逻辑思维能力和数学估算能力。解题步骤如下: 1. **估计尺寸:** 先估计一辆标准校车的...
15个Google面试题以及答案。对于的相关职位产品经理、软件工程师等。
谷歌面试题解析 本资源摘要信息中,我们将对谷歌面试题进行详细的解析和知识点总结。 知识点1:数据库基本操作 在面试题中,我们可以看到基本的数据库操作命令,如create database、use database、create table、...
C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案.docx c++笔试题汇总.pdf C++经典面试题库 附带参考答案.docx C++语言程序设计试题.docx C++面试题笔试题 CC+...
首先,Google面试题中提到了一个关于如何平分蛋糕的问题。这个问题实际上是考察空间几何想象力和对问题的深入分析能力。面试者需要考虑到蛋糕可能并不规则,但依旧要通过一刀切分的方式将蛋糕平均分配。题目中还提到...
根据给定文件的信息,我们可以提炼出一系列与Google(谷歌)笔试面试相关的知识点,涉及编程、算法、计算机系统原理等多个方面。 ### 1. 递归函数的理解与应用 #### 标题:`int cal(int x)` 函数分析 **描述**: ...
以下是对"google公司笔试面试题合集"中可能包含的知识点的详细解析: 1. **算法与数据结构**: - 面试中常见的算法题包括排序(快速排序、归并排序、堆排序等)、查找(二分查找、哈希表查找)、图论(最短路径、...
在IT行业的面试中,面试题通常涵盖了广泛的领域,包括但不限于编程语言、数据结构、算法、操作系统、计算机网络、数据库管理、软件工程、项目管理、云计算、人工智能、前端开发、后端开发等。以下是对这些常见面试题...
【谷歌面试题解析】 在科技巨头谷歌的面试过程中,算法和数据结构的掌握是至关重要的。这份由MIT(麻省理工学院)教授整理的资料,旨在帮助求职者充分准备谷歌的面试挑战。以下是对其中核心知识点的详细解读。 1. ...
【微软和谷歌面试题解析】 微软和谷歌等顶级科技公司的面试题目往往别具一格,旨在测试应聘者的逻辑思维、创新能力和快速反应能力。这些题目并非寻找标准答案,而是评估应聘者的思维方式和解决问题的策略。 1. **...
从给定的文件信息来看,这里探讨的主题是程序员面试题,特别是那些来自知名科技公司如微软、Google等的面试题目。文件中提到的“程序员面试题精选100题”显然是一个精心挑选的集合,旨在帮助应届毕业生和求职者更好...
《程序员面试题精选100题—何海涛》是一份详实的IT面试准备资料,由何海涛整理发布,旨在帮助应届毕业生和求职者准备面向微软、谷歌等知名科技公司的面试。此资料不仅收录了精选的100道面试题目,还提供了详细的解题...
1. **递归问题解决**:在第一道面试题中,涉及的是一个逻辑推理和递归的问题。妻子们需要通过观察其他丈夫的行为来判断自己的丈夫是否偷情。这个问题展示了递归思维的应用,即解决问题的过程可以分解为更小的相同或...
根据给定的信息,我们可以将这些经典的Google面试题分解为几个主要的知识点进行详细的解析: ### 1. 解密等式问题 **知识点:** - 数学逻辑与代数方程求解 - 字符串处理与算法设计 **解析:** 这道题目要求解一个...
IQ智力面试题笔试题 JAVA笔试面试资料 NET面试题笔试题 web开发 中兴资料 微软笔试面试 数据库面试题笔试题 百度笔试面试 算法 数据结构 网易搜狐新浪笔试面试 腾讯笔试面试 计算机基础 计算机网络 软件测试 阿里...