zoukankan      html  css  js  c++  java
  • 【 剑指Offer 1 】数据结构

    数据结构是技术面试中的重点,总结以下几种常见的必须熟练掌握数据结构。

    1. 数组
    2. 字符串
    3. 链表
    4. 栈和队列

    数组和字符串是两种最基本的数据结构,连续内存;

    链表和树是面试中出现频率最高的;

    栈与递归密切相关,队列与广度优先遍历算法密切相关。

    1. 数组

    顺序存储数据。

    预先分配内存:创建数组时,我们需要首先制定数组的容量大小,根据大小分配内存。

    问题:空间效率不好,经常会有空闲的区域没有得到充分利用。

    优点:内存连续,可根据下表在O(1) 时间读/写任何元素,时间效率高

    实现简单哈希表:数组下标设为哈希表的键值(key),数组中的数字位哈希表的值(value)。可以在O(1)时间内实现查找,快速、高效地解决问题。

    动态数组:解决数组空间效率不高的问题。

    例:C++的STL中的vector。可扩容。但这种额外操作影响时间性能。需要尽量减少改变数组容量大小的次数。

    数组名也是一个指针,利用指针访问数组时,要防止越界。

    举例说明数组和指针的区别:

     面试题:数组中重复的数字

     

  • 相关阅读:
    (转)HTTP、TCP和HTTPS
    使用覆盖索引优化like查询
    Laravel 源码解析(一)
    redis 缓存策略注意的问题总结
    laravel 监听mysql操作 生成时间
    CommonJS, AMD, CMD 笔记
    php json_encode小数精度丢失的问题
    Python通过pandas操作excel常用功能
    Vmware 虚拟化技术
    磁盘中的esp分区与msr分区
  • 原文地址:https://www.cnblogs.com/shona/p/10655304.html
Copyright © 2011-2022 走看看