zoukankan      html  css  js  c++  java
  • 从“面试官: 既然已经有数组了,为什么还要链表”想到思维方式。

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

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

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

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

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

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

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

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

    答:

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

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

    最后,比较不同的操作。

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

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

  • 相关阅读:
    poj 2777 Count Color
    poj 3264 Balanced Lineup
    hdu 1754 I hate it
    poj 3468 A Simple Problem with Integers
    noip 2013 提高组 Day2 部分题解
    [c/c++]指针(2)
    [c/c++]指针(1)
    vijos 1360 八数码问题
    [复习]快速幂算法
    noip 2013 提高组 day1
  • 原文地址:https://www.cnblogs.com/chentianwei/p/11604654.html
Copyright © 2011-2022 走看看