【面试试题】2.数组高频面试题精讲_第1页
【面试试题】2.数组高频面试题精讲_第2页
【面试试题】2.数组高频面试题精讲_第3页
【面试试题】2.数组高频面试题精讲_第4页
【面试试题】2.数组高频面试题精讲_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数组高频面试题精讲,七月算法曹鹏2015年4月22日,2/16,提纲,数组简介面试题总体分析选题原则难度经典(常见)新颖一些例题例1局部最小值例2第一个缺失的正整数例3元素间的最大距离例4只出现一次的数例5众数问题例6“前缀和”的应用总结,数组简介,数组(array)java:,ArrayListC+:STLvector,C:只有理解:输入的数组通常理解为集合,我们自己可以排序,查找注意C+STL中vector的一种实现数组下标是一种特殊的hash做计数理解数组与map给数组“顺序”,3/16,面试题总体分析,查找和排序二分查找元素交换排序,中位数归并位运算前缀和的应用动态规划排列组合,4/16,例1局部极小值,例1一个给定的不包含相同元素的整数数组,每个,局部极小值的定义是一个值比左右相邻的(如果存在)都小的值,求它的一个局部最小值(国外某公司面试题)分析:局部最小值的存在性,全部数组的最小值显然是一个解。O(n)?我们规定数组下标a1.n,并定义a0=an+1=,我们有a1a0,anan+1结论:子数组ax.y若axax1,ayay+1,则它包含一个局部极小值,5/16,例1续,mid=(x+y)/2,二分,两个子数组ax.mid,amid+1.y若amidamid+1,则子数组amid+1.y满足amid+1amid,ay1),求把这些整数表示在数轴上,相邻两个数差的最大值。(Leetcode164)显然排序是一个思想。有更好的方法么?最大值x,最小值y,如果x=y显然答案是0把数放进(n+1)个桶每个桶大小是d=(xy)/(n+1)(浮点数)每个桶区间是y+i*d,y+(i+1)*d)(i=0,1,.n)注意是左闭右开的区间,最后一个桶是双闭区间最小的数在0号桶里,最大的数在n号桶里第一个桶非空,最后一个桶非空,8/16,例3续,中间有空桶,空桶左右两侧肯定有元素!最大间隙出现在一个非空桶的最大值和下一个非空桶的最小值之间如何判断数r在哪个桶里?(ry)*(n+1)/(xy)(整数运算),注意r=x的时候,答案取n记录每个桶的最大值和最小值即可,时间空间都是O(n),9/16,例4只出现1次的数,一个数组,所有元素都出现了两次,只有两个数只出现了一次,求这两个数。分析:所有数做异或,则出现两个次的数相抵消,那么最终的结果就是那两个出现一次的数x和y的异或结果,即xxory,且这个值非0既然xxory非0,我们可以找到二进制表示中某一个为1的位(bit)(例如最低位),把所有的数按这位为1和为0分开。在该位为0和为1的数中,各有一个数只出现一次。(一个是x,另一个是y),10/16,例4续,伪代码:intxXory=0;for(inti=0;in;+i)xXory=ai;intmask=1;for(;(xXory思考题Leetcode137除一个外,所有数出现了3次,求那个数(难)1-100,缺少了两个数,求这两个数?位运算?解方程?,11/16,例5众数问题,找出超过一半的数分析:众数出现的次数大于其他所有数出现次数之和每次扔掉两个不同的数,众数不变如果扔掉一个众数,和一个非众数如果扔掉两个非众数如何实现?和x不同就扔掉,表示扔掉了一个x和一个y?intcount=0,x;for(inti=0;i=0;-i)bi=ai*(i=n1)?1:bi+1);顺带求“前缀积”for(inti=0,j=1;in;j*=ai+)bi=j*(i=n1)?1:bi+1);,13/16,例6续,关于前缀和的性质ai+ai+1+aj=sumjsumi1思考题求数组中连续一段和,绝对值最小?(codility)提示:用前缀和排序把一个数组从中间p位置分开,使得a0+.+ap1与ap+ap+1+an1差值最小?提示:前缀和,与总和减去该前缀和的差最小,枚举如果都是非负数,可以采取“两头扫”的方法,和较小的那一边多加一个数(国外某公司的面试题),14/16,总结,利用序理解二分查找利用前缀和查找、计算、排序理解数组map用数组实现高级数据结构一般树:存每个节点的父亲(并查集)二叉树:下标从1开始ai的儿子是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论