从“面试官: 既然已经有数组了,为什么还要链表”想到思维方式。

原文:https://juejin.im/post/5d843f145188254009776ea5

对于链表我的第一印象是熟悉,但不怎么用。如果遇到面试官问这个问题,怎么回答?

原文介绍了链表的定义,和数组的区别,等等。

我想如果遇到类似问题,即“为什么用A算法,而不用B算法?”的问题,如何回答:

1. 脑子里得回想2种算法的定义。

2. 然后就是比较,它们的结构,有什么异同。

3. 针对查找,插入,删除,读取等操作,谁的时间复杂度更低。原因是什么。

 

那么如果遇到原文“面试官: 既然已经有数组了,为什么还要链表”这个问题,就可以套路了。

答:

首先,定义上看:数组是连续的数据结构,通过0~n的整数索引来存取数据,它储存在连续的内存空间。链表则是每个元素通过指针来指向下一个元素,它使用指针把零散的内存块串联起来。

其次,它们都是都是线性数据结构。但不同之处是链表用指针代替了索引。根据指针的不同,链表有单向,双向,循环3种。

最后,比较不同的操作。

  • 查询操作,都是从第一个元素开始,逐个比较,因此时间复杂度一样:n.
  • 插入操作,数组如果要插入一个元素,那么它后面的元素的索引都需要改变;而链表,只需要增加和断开指针即可插入一个元素,无疑是更快。
  • 删除操作,同理插入操作。
  • 读取操作,比如读取数组A的第10个元素,直接使用索引即可,但是链表需要遍历操作,因此更慢。

 

如此就能从容面对面试官了。

posted @ 2019-09-28 20:10  Mr-chen  阅读(352)  评论(0编辑  收藏  举报