2019网易校招内推笔试题--苹果属于哪一堆
题目描述
又到了丰收的季节,恰好小易去牛牛的果园里游玩。 牛牛常说他多整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛。 在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第x个苹果是属于哪一堆的。 牛牛觉得问题太简单了,所以希望你来替他回答。
输入描述:
第一行一个数n(1<=n<=10^5) 第二行n个数ai(1<=ai<=1000),表示从左往右数第i堆有多少苹果 第三行一个数m(1<=m<=10^5),表示有m次询问 第四行m个数qi,表示小易希望知道第qi个苹果属于哪一堆。
输出描述:
m行,第i行输出第qi个苹果属于哪一堆。
输入例子1:
5
2 7 3 4 9
3
1 25 11
输出例子1:
1
5
3
分析:
共有n堆苹果,每堆的个数为a[i],要查找从左往右数第x个苹果是属于哪一堆的。
示例:n=5,a[] = {2, 7, 3, 4, 9};
若x属于第一堆,则x<=2(a[0]);
若x属于第二堆,则a[0]< x <=2+7(a[0]+a[1]);
若x属于第三堆,则a[0]+a[1] < x <=2+7+3(a[0]+a[1]+a[2]);
………………………
由此可知,依次求出前n(1,2,…,n)堆苹果数量之和sum[n] = {2, 9, 12, 16, 25},查第x个苹果是属于哪一堆的,即是在递增序列中的查找问题。对于有序序列的查找,首先想到的应该就是二分查找,因此,此题就可解了。
参考代码:
//n:苹果的堆数;a:每堆苹果的个数;no:查的是第几个苹果
//返回的是从0开始的序号
int getOwn(int n, int a[], int no)
{if(n <= 0 || a == NULL)return 0;int ret = 0;int *sum = (int*)malloc(sizeof(int)*n);sum[0] = a[0];for(int i=1; i<n; i++){sum[i] = sum[i-1] + a[i];}//二分查找int low = 0;int high = n - 1;int mid = 0;while(low <= high){mid = (high + low) / 2;if(sum[mid] == no)return mid;else if(sum[mid] > no)high = mid - 1;elselow = mid + 1;}free(sum);return low;
}int main()
{/*int x[] = {2,7,3,4,9};int tmp = getOwn(5, x, 18);cout<<tmp+1<<endl;*/int n, t;cin>>n; //苹果的堆数int *a = (int*)malloc(sizeof(int)*n);for(int i=0; i<n; i++) //每堆苹果的个数{cin>>a[i];}cin>>t; //查询的次数int *x = (int*)malloc(sizeof(int)*t);for(int i=0; i<t; i++) //每次查的是第几个苹果{cin>>x[i];}vector<int> result;for(int i=0; i<t; i++){//根据输出例子可知,应在求得的结果上加1才是最终的结果int tmp = getOwn(n, a, x[i]) + 1;result.push_back(tmp);}vector<int>::iterator it = result.begin();for(; it != result.end(); it++){cout<<*it<<endl;}free(a);free(x);return 0;
}
2019网易校招内推笔试题--苹果属于哪一堆相关推荐
- 网易2017内推笔试题--小易老师的疯狂数列
小易老师是非常严厉的,它会要求所有学生在进入教室前都排成一列,并且他要求学生按照身高不递减的顺序排列.有一次,n个学生在列队的时候,小易老师正好去卫生间了.学生们终于有机会反击了,于是学生们决定来一次 ...
- 360集团2016JAVA研发工程师内推笔试题
360集团2016JAVA研发工程师内推笔试题 题目来源:牛客网 https://www.nowcoder.com/test/question/analytic?tid=21122281 1.执行以下 ...
- 2016网易有道内推笔试题
1. 洗牌 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Descr ...
- 完美世界运营培训生内推笔试题
1.请选择两个不同游戏类别(如手游,页游,家用机游戏等),说明受众的异同点. 2.如果你在给老板做PPT演示的时候,突然弹出了不雅图片,你会怎么做? 3.你想知道A是否还是你的好友,但是又不能直接问他 ...
- 蘑菇街2019届校招-测试类笔试题
1.在Linux上,对于多进程,子进程继承了父进程的下列哪些?(共享内存.信号掩码.已打开的文件描述符) 2.java语言中,在同一包下,以下说法正确的有() (super.方法()可以调用父类的所有 ...
- 2018年网易校招内推编程题之交错01串
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串.例如: "1","10101","0101010"都是交错 ...
- 数据分析真题日刷 | 京东2019校招数据分析工程师笔试题
今日真题 网易2018校园招聘数据分析工程师笔试卷(来源:牛客网) 题型 客观题:单选51道,不定项选择12道 完成时间 120分钟 牛客网评估难度系数 3颗星 ❤️ 「更多数据分析真题」 <数 ...
- 滴滴2019校招产品经理笔试题
滴滴2019校招产品经理笔试题 题目一 题目一 对于一个50层的商业型物业楼,1-10层为百货大楼,11-50层为写字楼. 请规划楼层的经营内容或租赁对象: 有10部电梯,请根据经营情况,规划这10部 ...
- 百度2019校招计算机视觉方向笔试题
百度2019校招计算机视觉方向笔试题 第一题:K-means聚类 第二题:相机模型 第三题:自动驾驶 第四题:目标检测 第一题:K-means聚类 关于K-means聚类算法,请回答以下问题: K-m ...
最新文章
- Oracle的使用和Oracle安装过程
- 如何使用Spring优雅地处理REST异常?
- python动态爬取不一样的url_什么情况?python这次居然被web scraper比下去了
- 1031. 查验身份证(15)
- 60分钟快速入门PyTorch
- Spring简化Java开发_spring如何简化java开发
- vim怎么跳转到函数定义处_Vim、gvim操作跳转光标区块和代码块的跳转
- androidx86安装pc后无法联网_Ubuntu 16.04 安装显卡驱动后循环登录和无法设置分辨率的一种解决方案
- Linux工作笔记037---Centos下Linux创建用户_用户组_删除用户
- 宿舍电源额定500w,我的电脑550w的,有什么办法能解决吗?
- DIV+CSS常见错误汇总
- 大事件!35的程序员竟然失去了面试资格,这是为什么?
- eclips 创建 maven项目
- admin is not in the sudoers file. This incident will be reported
- 怎么创建电脑的无线网络连接服务器,怎么开通无线网络
- EPLAN中如何画屏蔽双绞线
- HTML---复选框默认打钩
- pycharm汉化教程
- 基于DLNA的移动端网络视频投屏技术
- Java各种加密方式集锦(AES,DES,RSA,DSA,MD5,SHA)