2016/12/30其实一直想写的一道腾讯面试题
来源:互联网 发布:广东广电网络营业厅 编辑:程序博客网 时间:2024/05/18 01:57
背景:
虽然注定是与腾讯没有机会的,但是想想,还是算得上擦身而过,而且,面试官也给我留下了极好的印象,所以一直想着要把那个题目写写。
题目要求:
现在我有一数组,里面保存着可以区分大小的数据。我想做的事情很简单,找到这组数据中出现次数最多的那个数据,把他的值和次数都记录下来。
当我拿到这个题目的时候,我几乎是没有思路的,但是为了能够不让面试空白,于是决定采用最落后的、最暴力的方法来回答。
思路陈述:
第一思路(暂且认为他是思路吧)是动态申请一个二维数组,因为数据的长度是有限的,其实也是可以固定申请一个方阵,对序列中的数据,逐渐的列出来,没出现一个新的数据,就将其放置在矩阵的新一行中,然后知道穷举到数组的最后一个。此时,开始对每一行数据进行统计,查看个数,之后就能够得到出现次数最多的数据以及其出现次数。但是不难看出,该方法执行效率非常低下,而且还具有很高的内存占用率,除非采用二维动态申请,那样的话,程序的编写又十分的繁琐。
面试官后来提示我,可以先对数据进行排序。排序的作用可以使得相同的数据集中到一起,然后再对数据进行统计,就能够十分快速的获得结果。
程序实现:
下面是使用C++
中的vector
编写的实现,仅供参考,排序部分采用的是基本的冒泡排序,如有不足请大家多多指教。
#include<iostream>#include<vector>using namespace std;void main(void){ vector<int> a; int len = a.size(); int tmp; while(len == 0) { cout<<"数组中有 "<<len<<" 个数据!"<<endl<<"请输入正整数,以负数表示输入结束,输入0结束改程序!"<<endl; cin>>tmp; while(tmp > 0) { a.push_back(tmp); cin>>tmp; } if(tmp == 0) { cout<<""<<endl; system("pause"); return; } len = a.size(); } cout<<"输入了 "<<len<<" 个数据!"<<endl; /////////// 排 序 cout<<"开 始 排 序 . . . . . . "<<endl; for(int ii = 0;ii < len ;ii = ii + 1) { for(int jj = len - 1;jj > ii ;jj = jj - 1) { if(a.at(ii) > a.at(jj)) { tmp = a.at(ii); a.at(ii) = a.at(jj); a.at(jj) = tmp; } } } cout<<"排序完毕,结果如下:"<<endl; for(int ii = 0;ii < len ;ii = ii + 1) { cout<<a.at(ii)<<"\t"; } cout<<endl; cout<<"开 始 统 计 . . . . . . "<<endl; int cnt = 1; int cnt_max = cnt; int max_num_val = a.at(0); for(int ii = 1;ii < len - 1 ;ii = ii + 1) { if(a.at(ii) == a.at(ii - 1)) { cnt = cnt + 1; if(cnt > cnt_max) { cnt_max = cnt; max_num_val = a.at(ii); } } else { cnt = 1; } } cout<<"出现次数最多的数是: "<<max_num_val<<" ,出现次数为: "<<cnt_max<<endl; system("pause");}
一定要多注意在统计那里,及时更新最大出现次数以及对应数值,当出现次数最大的数值为最大的数值极容易出错。
运行结果:
0 0
- 2016/12/30其实一直想写的一道腾讯面试题
- 腾讯的一道面试题
- 腾讯的一道面试题
- 一道腾讯的面试题
- 腾讯的一道面试题
- 腾讯的一道面试题
- 腾讯的一道面试题
- 一道腾讯面试题
- 一道腾讯面试题
- 一道腾讯面试题 .
- 一道腾讯面试题
- 一道腾讯面试题
- 腾讯一道面试题
- 腾讯一道找中位数的面试题
- 一道腾讯公司的面试题
- 腾讯的一道Script面试题
- 网上看到的一道腾讯面试题
- 试着解一道腾讯面试题
- 2016年终记
- Could not open input file: artisan
- 位运算中的小技巧
- A1062. Talent and Virtue (25)
- Linux环境下使用NLPIR(ICTCLAS)中文分词详解
- 2016/12/30其实一直想写的一道腾讯面试题
- CQL(Cassandra Query Language)数据定义
- JS或jQuery实现全屏
- JAVA操作数据库一(Spring data jpa)
- 继承和抽象类练习
- LeetCode 136. Single Number
- VT调试器 X64
- Shell编程二:Shell中的数组
- android H5 应用内跳转Scheme协议