面试算法宝典之哈希表和集合

本文深入探讨了哈希表的基本概念,包括散列函数和解决冲突的方法,并介绍了集合的独特性质。接着讨论了Map和Set的实现,如HashMap、TreeMap、HashSet和TreeSet。此外,通过分析LeetCode题目,如有效字母异味词、两数之和和三数之和,展示了哈希表在解决算法问题中的高效应用。
摘要由CSDN通过智能技术生成

1. 基本概念

1. 哈希表

我们先来看一下什么是哈希表

散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash) 函数。

2. 通过图解来了解哈希表

hash函数算法, 就是根据每个key的值, 进行hash函数的计算, 然后映射到我们数据结构中, 我们访问的时候, 时间复杂度就是O(1)的。

如果有多个key的值, 经过hash函数的算法, 得到的value值是一样的, 那我们就通过链表的形式, 把所有的value值进行链接一下。

3. 集合

集合最重要的一个特征, 就是其内部元素是不能重复的。

2. Map和Set的一些实现方式

map的实现方式有:

HashMap: 通过key, value的映射关系实现, 根据key获取元素, 时间复杂度为O(1)

TreeMap:  内部是通过二叉树实现的Map, 查询元素的时间复杂度为(logn), 但是TreeMap里面的元素是排序的。

Set的实现方式有:

HashSet: 查询元素的时间复杂度也是O(1)

TreeSet: 时间复杂度为O(logn), 但是内部的元素是排序好的。

如果我们讲究效率, 就用HashMap或者HashSet就可以, 查询快,

如果我们需要排序, 使用TreeMap和TreeSet.

3. leetcode常用习题分析

1. leetcode242(有效字母异味词)

//给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 
//
// 示例 1: 
//
// 输入: s = "anagram
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值