LeetCode75学习计划-哈希表/哈希集合
算法解题思路很多会借鉴于题解区,如果侵权请联系删除。
本章节知识点为哈希表/哈希集合。
找出两数组的不同
题目标签:
- 数组
- 哈希表
题目难度: Easy
题目描述:
给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,请你返回一个长度为 2 的列表 answer ,其中:
answer[0] 是 nums1 中所有 不 存在于 nums2 中的 不同 整数组成的列表。answer[1] 是 nums2 中所有 不 存在于 nums1 中的 不同 整数组成的列表。
注意:列表中的整数可以按 任意 顺序返回。
解题思路:
- 通过集合来存储每个数组的数据映射,然后比对即可
代码实现:
1 | func findDifference(nums1, nums2 []int) [][]int { |
独一无二的出现次数
题目标签:
- 数组
- 哈希表
题目难度: Easy
题目描述:
给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。
如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。
解题思路:
- 可以先统计每个数字出现的次数,最后比对次数是否有重复即可
代码实现:
1 | func uniqueOccurrences(arr []int) bool { |
确定两个字符串是否亲近
题目标签:
- 字符串
- 哈希表
- 排序
题目难度:Medium
题目描述:
如果可以使用以下操作从一个字符串得到另一个字符串,则认为两个字符串 接近 :
操作 1:交换任意两个 现有 字符。
例如,abcde -> aecdb
操作 2:将一个 现有 字符的每次出现转换为另一个 现有 字符,并对另一个字符执行相同的操作。
例如,aacabb -> bbcbaa(所有 a 转化为 b ,而所有的 b 转换为 a )
你可以根据需要对任意一个字符串多次使用这两种操作。
给你两个字符串,word1 和 word2 。如果 word1 和 word2 接近 ,就返回 true ;否则,返回 false 。
解题思路:
- 满足要求的字符必须满足几个条件
- 两个字符串的长度相同
- 两个字符串里的字母的种类相同
- 两个字符串的字母数量对应,不要求字母一样,但必须是对应的,比如
word1有3个a,2个b,1个c, 而word2有3个c,2个a,1个b,不要求字母一致,但是数量要能对应起来
代码实现:
1 | func closeStrings(word1 string, word2 string) bool { |
相等行列对
题目标签:
- 数组
- 哈希表
- 矩阵
题目难度:Medium
题目描述:
给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ,返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。
如果行和列以相同的顺序包含相同的元素(即相等的数组),则认为二者是相等的。
解题思路:
- 通过哈希表将每一行放入哈希表中统计该行内容出现的次数
- 然后循环每一列,找到与之相等的行,然后将次数累加即可
代码实现:
1 | func equalPairs(grid [][]int) int { |
LeetCode75学习计划-哈希表/哈希集合
https://zhaolei-hu.github.io/2023/12/09/LeetCode75学习计划-哈希表-哈希集合/