前言
第7天:哈希表
哈希表则提供了更快的查找方式,线性枚举时间复杂度为O( n n n),遇到有序顺序表时采用二分查找的方式时间复杂度为O( log 2 n \log_2 n log2n)。把需要查找的数据,通过一个函数映射,找到存储数据位置的过程为哈希。哈希表,又称散列表,使用 O(n) 空间复杂度存储数据,通过哈希函数映射位置,从而实现近似 O(1) 时间复杂度的插入、查找、删除等操作。
Python中常见的数据结构有列表、字典、集合以及元组。
一、练习题目
题目链接 | 难度 |
---|---|
1512. 好数对的数目 | ★☆☆☆☆ |
2006. 差的绝对值为 K 的数对数目 | ★☆☆☆☆ |
1347. 制造字母异位词的最小步骤数 | ★★☆☆☆ |
面试题 10.02. 变位词组 | ★★☆☆☆ |
二、思路与代码
1. 好数对的数目
题目描述:
给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。
解题思路:
1)根据题目提示,nums取值范围在100以内,创建一个长度为101的哈希数组Hash
;
2)哈希数组的下标为nums的取值,每新出现一个相同下标,新的好数对加Hash[nums[i]]
个,Hash[nums[i]] += 1
。
class Solution(object):
def numIdenticalPairs(self, nums)