第5课-哈希表、映射、集合

Hash table

哈希表(Hash table),也叫散列表,是根据关键码值(Key value)而直接进行访问的数据结构。

它通过把关键码值映射到表中一个位置来访问记录,以加快查找的 速度。

这个映射函数叫作散列函数(Hash Function),存放记录的数组 叫作哈希表(或散列表)。

工程实践

  • 电话号码簿
  • 用户信息表
  • 缓存(LRU Cache)
  • 键值对存储(Redis)

Hash Function

在这里插入图片描述

Hash Collisions

在这里插入图片描述

完整结构

在这里插入图片描述

复杂度分析

在这里插入图片描述

Java code

Map:key-value对,key不重复
- new HashMap() / new TreeMap() - map.set(key, value)
- map.get(key)
- map.has(key)
- map.size()
- map.clear()
Set:不重复元素的集合
- new HashSet() / new TreeSet() - set.add(value)
- set.delete(value)
- set.hash(value)

Python code

list_x = [1, 2, 3, 4]
map_x = {
‘jack’: 100, ‘张三’: 80,
  ‘selina’: 90,
... }
set_x = {‘jack’, ‘selina’, ‘Andy’}
set_y = set([‘jack’, ‘selina’, ‘jack’])

Map, Set : interfaces

复杂度分析

在这里插入图片描述

实战题目

  1. https://leetcode-cn.com/problems/valid-anagram/description/
  2. https://leetcode-cn.com/problems/group-anagrams/
  3. https://leetcode-cn.com/problems/two-sum/description/
  4. 小技巧养成收藏精选代码的习惯:
    https://shimo.im/docs/R6g9WJV89QkHrDhr/read
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值