算法最优解 算法最优解
首页
目录
赞助
GitHub (opens new window)
首页
目录
赞助
GitHub (opens new window)
  • 数据结构基础

    • 怎样准备面试中的手写算法
    • 面试中需要熟知的数组知识
    • 面试中需要熟知的字符串知识
    • 面试中需要熟知的哈希表知识
      • 哈希表介绍
      • 不同语言对应的实现
      • 不同操作的时间复杂度
    • 链表的套路都在这里了
    • 面试中需要熟知的栈和队列
    • 面试中需要熟知的递归
    • 如何理解递归
    • 关于排序,你必须知道的
    • 二分查找,你学废了吗
    • 动态规划
    • 回溯
    • kmp算法详解
  • 数组

  • 位运算

  • 动态规划

  • 图

  • 区间

  • 链表

  • 矩阵

  • 字符串

  • 树

  • 堆

  • 逻辑思维

  • 目录
  • 数据结构基础
华南溜达虎
2024-07-08
目录

面试中需要熟知的哈希表知识

# 面试中需要熟知的哈希表知识

# 哈希表介绍

哈希表(又称为哈希映射)是一种可以将键映射到值的数据结构。哈希表使用哈希函数计算出一个哈希码,该哈希码指向一个槽位,从中可以找到所需的值。

使用哈希表是最常用的空间换时间的方式。我们可以遍历数组一次,并将所有元素散列到一个哈希表中,而不是每次线性搜索数组以确定元素是否存在。一次数组的搜索需要花费O(n)时间复杂度,而使用哈希表的平均时间复杂度为0(1)。

在哈希冲突的情况下,可以使用许多方法来冲突。在面试中,你有可能被问到冲突解决的具体方法,常见的方法如下:

  • 链地址法,每个哈希码对应一个链表,链表中存储所有的冲突项。

  • 开放寻址法, 所有数据都存储在哈希表的槽中。如果存在哈希冲突,从冲突的槽开始,按照某种探测顺序(线性探测、平方探测等),直到找到一个未被占用的槽。

# 不同语言对应的实现

语言 实现接口
c++ std::unordered_map
java java.util.HashMap
python dict
javascript Object 或 Map

# 不同操作的时间复杂度

操作 平均时间复杂度
查找 O(1)
插入 O(1)
删除 O(1)

在面试中涉及到的一般都是平均时间复杂度。

上次更新: 2024/07/08, 19:42:39
面试中需要熟知的字符串知识
链表的套路都在这里了

← 面试中需要熟知的字符串知识 链表的套路都在这里了→

Theme by Vdoing | Copyright © 2024-2024 华南溜达虎 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式