设有一个栈,元素的进栈次序为abcde

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

设有一个栈,元素的进栈次序为abcde 栈的基本特点:

1、先入后出,后入先出。

2、除头尾节点之外,每个元素有一个前驱,一个后继。

栈的数据结构是一个后进先出的结构,你可以简单的吧abcde理解成5个羽毛球,栈就是放羽毛球额球筒,进栈(S)操

作就是拿一个球放进球筒,出栈(X)操作就是拿出球筒最上面

的一个球在你这个题目中最后得到的出栈顺序结果是b,c,e,d,a具体的每一次操作如下:所谓知己知彼,百战不殆,今天

就和大家聊聊互联网公司那些最常见的面试算法题。

清点面试算法题之前我们先要明确面试官考察的目的,比如有一道经典考题是“怎么用3升和5升的桶量出4升的水?”

其实这道题的答案并不难,但是对于面试官,可以通过这道题考察的内容就比较丰富了。

一、概括一下面试算法的目的

1、基础知识储备量考察知识储量是面试算法最基本的目的,但是直接考察算法基础已经很少出现在实际面试中了,需要快速筛选面试者的时候才会用到。

2、思考方向有的算法可能有两个甚至多个答案,这时面试官就不是单纯的考察面试者的知识储备量了,通过面试者的答案可以看出面试者的思考方向,符合公司的日常工作需求才是“有缘人”。

3、解决问题能力能不能解出答案是次要的,分析和解决问题的思路才是面试官考察的根本所在。

4、辅助能力算法是整个计算机领域里最基础的学科,其余大部分的学科和技能都是在算法的基础上展开的,所以这类考察实则是考察面试者能否快速融入工作当中。

总的来说,算法题是综合考察面试者思维逻辑和基础知识的好办法。

二、算法面试题的类型虽然面试算法题层出不穷,但从算法的类型来看,互联网公司最常见的面试算法题分以下几种。

1、基础算法基础算法主要有大数据查找、、哈希算法解决等。以针对搜索来讲,可能设计一个数据库表内包含名字、课程、分数3列,求所有课程最低分不小于80分的名单,如果要求用SQL表达,就是对于基础知识点和基本功的考察。另外可能还会涉及一些计算机网络的TCP三次握手协议等基础的算法考察。

例如2017京东校招的排序题目:对关键字{

10,

8,

25,

35,

6,

18,

30,

5,

15,28}序列进行希尔排序,取增量d =5时,排序结果为()A. {

6,

18,

8,

5,

15,

10,

30,

25,

35,28}B. { 10,

18,

8,

5,

15,

6,

20,

30,

25,

35,28}C. { 10,

20,

5,

15,

6,

18,

30,

25,

35,28}D. { 10,

20,

30,

5,

8,

6,

15,

18,

28,35}1) 用简单取巧的,标记原始关键字为abcdeabcdea,那么a对应的数字就是

10,

6,

28,排序后就是

6,

10,

28,所以答案就是A。

2) 当然也可以用代码去实现,更考验技术含量,就像下

面的JAVA实现。

public class ShellSort { public static void main(String [] args) { int[]a={

49,

38,

65,

97,

13,

27,

49,

78,

34,

12,

64,1}; System.out.println("排序之前:"); for(int

i=0;i

j=i;j+da[j+d]){ temp=a[j];

a[j]=a[j+d]; a[j+d]=temp; } } } if(d==1){break;} d--; } System.out.println(); System.out.println("排序之后:"); for(int

i=0;i

2、数据结构基础数据结构更多的出现在应届生校招和笔试环节中,这类面试题涉及到链表、堆、栈、队列、图、二叉树等。

比如2018年科大讯飞的笔试题:下面关于二叉排序树的说法错误的是()A. 在二叉排序树中,完全二叉树的查找效

率最低B. 对二叉排序树进行中序遍历,必定得到节点关键字

的有序序列C. 二叉排序树的平均查找长度是O(log2n)

D. 二叉排序树的查找效率与二叉树的树形有关通过二叉

排序树,可以发现完全二叉树的查找效率最高,故答案选A。

3、灵活解决问题的算法灵活解决问题的算法在面试中占

据了相当重要的地位,这类题不告诉面试者具体需要用什么算法,而是虚构一个问题,让你找出具体的解决方案。

比如腾讯优图的面试题:给你8颗小石头和一架天平,其中7颗石头重量是一样的,另外一个比这7颗略重。请问在最坏的情况下,最少要称量几次,才能把这颗最终的石头找出来?

最简单的方法是挑出两颗,把剩下6颗分成两份称重,如果一样重,则再称一下挑出的那两颗即可,如果不一样重,排除较轻的三颗,剩下3颗挑一颗出来,称其余两颗。如果一样重,则挑出的那颗便是,如果不一样重,重的那颗便是。所以答案是两次。

淘宝的面试题:假设淘宝一天有5亿条成交数据,求出销量最高的100个商品并给出算法的时间复杂度。

看似是考察查找算法的,但是因为询问了时间复杂度,所以要多想一步,如何优化?针对具体问题,可以把5亿条数据分组来存放,这样就可以分别在每个文件的个数据中,用哈希以及堆来统计每个区域内前100个频率最高的商品,最后求出所有记录中出现频率最高的前100个商品。

相关文档
最新文档