【五月集训】Day07——哈希表

本文是关于哈希表的集训总结,详细介绍了利用哈希表解决好数对、差值绝对值为K的数对、制造字母异位词的最小步骤数以及变位词组等问题。通过实例解析哈希表在数组和字符串查找操作中的高效应用,同时探讨了知识管理和学习策略的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

        第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):
        """
        :type nums: List[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值