哈希表
文章平均质量分 60
BananaScript
上至前后端人工智能,下至嵌入式树莓派,无所不能的IT全栈
展开
-
【leetcode/哈希表】四数相加(利用哈希映射降低时间复杂度)
问题描述:给定四个包含整数的数组列表A , B , C , D ,计算有多少个元组 (i, j, k, l),使得A[i] + B[j] + C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 - 1 之间,最终结果不会超过231 - 1 。例如:输入:...原创 2019-10-26 11:12:17 · 207 阅读 · 0 评论 -
【leetcode/哈希表】无重复的最长子串(哈希集合+滑动窗口)
问题描述:给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为...原创 2019-10-26 10:29:07 · 158 阅读 · 0 评论 -
【leetcode/哈希表】寻找重复的子树(序列化表示子树)
问题描述:给定一棵二叉树,返回所有重复的子树。对于同一类的重复子树,你只需要返回其中任意一棵的根结点即可。两棵树重复是指它们具有相同的结构以及相同的结点值。示例 1: 1 / \ 2 3 / / \ 4 2 4 / 4下面是两个重复的子树: 2 /...原创 2019-10-26 08:31:29 · 230 阅读 · 0 评论 -
【leetcode/哈希表】有效的数独(使用哈希映射在矩阵中进行分类)
问题描述:判断一个9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字1-9在每一行只能出现一次。 数字1-9在每一列只能出现一次。 数字1-9在每一个以粗实线分隔的3x3宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用'.'表示。示例1:输入:[ ["5","3","....原创 2019-10-25 22:09:44 · 162 阅读 · 0 评论 -
【leetcode/哈希表】字母异位分组(哈希映射分组)
问题描述:给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"],输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。 不考虑答案输出的顺序。基本思路:...原创 2019-10-25 15:31:18 · 223 阅读 · 0 评论 -
【leetcode/哈希表】存在重复元素(哈希表+滑动窗口)
问题描述:给定一个整数数组和一个整数k,判断数组中是否存在两个不同的索引i和j,使得nums [i] = nums [j],并且 i 和 j的差的绝对值最大为 k。示例1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums...原创 2019-10-25 13:53:10 · 232 阅读 · 0 评论 -
【leetcode/哈希表】两个数组的交集(哈希表的使用)
问题描述:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。 我们可以不考虑输出结果的...原创 2019-10-25 13:17:50 · 507 阅读 · 0 评论 -
【leetcode/哈希表】字符串中第一个唯一字符(哈希表与遍历)
问题描述:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.注意事项:您可以假定该字符串只包含小写字母。基本思路:建立一个字符到该字符出现个数统计的映射,然后找出第一个个数统计为1的元素。有一点要尤为注意:我们都知道哈...原创 2019-10-25 12:36:34 · 223 阅读 · 0 评论 -
【leetcode/哈希表】两个列表最小的索引和(哈希映射的应用)
问题描述:假设Andy和Doris想在晚餐时选择一家餐厅,并且他们都有一个表示最喜爱餐厅的列表,每个餐厅的名字用字符串表示。你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个,则输出所有答案并且不考虑顺序。 你可以假设总是存在一个答案。示例 1:输入:["Shogun", "Tapioca Express", "Burger King", "KFC"]["...原创 2019-10-25 11:58:21 · 153 阅读 · 0 评论 -
【leetcode/哈希表】同构字符串(哈希映射记录更多信息)
问题描述:给定两个字符串s和t,判断它们是否是同构的。如果s中的字符可以被替换得到t,那么这两个字符串是同构的。所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。示例 1:输入: s = "egg", t = "add"输出: true示例 2:输入: s = "foo", t = "...原创 2019-10-25 11:38:07 · 177 阅读 · 0 评论 -
【leetcode/哈希表】两数之和(哈希映射的使用)
问题描述:给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-10-25 10:11:33 · 192 阅读 · 0 评论 -
【哈希表】C++STL内置哈希表
hashset和hashmap都是hashtable的一种实现形式。接下来我要介绍的unordered_set和unordered_map都是基于hashtable的实现。unordered_set实现了不存储重复的元素。unordered_map实现了key和value的映射。下面就让我们一起来了解它吧!一. set和unordered_set·对比 s...原创 2019-10-25 10:09:26 · 1593 阅读 · 0 评论 -
【leetcode/哈希表】两个数组的交集(用哈希集去重)
问题描述:给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。基本思路:使用两个哈希表...原创 2019-10-24 08:36:43 · 397 阅读 · 0 评论 -
【leetcode/哈希表】存在重复元素(用哈希表判重)
问题描述:给定一个整数数组,判断是否存在重复元素。如果任何值在数组中出现至少两次,函数返回 true。如果数组中每个元素都不相同,则返回 false。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true基本思路:利用哈...原创 2019-10-24 08:24:23 · 1348 阅读 · 0 评论 -
【哈希表】哈希集合(bitmap)
一. 问题背景之前我们提到了哈希集合的朴素实现。你要知道哈希表的一个重要思想就是使用空间换时间。他引入了一个用作桶的数组。所以我们可以通过O(1)的时间+哈希函数进行插入和检索。不过这种做法空间的浪费太严重了,注意到我们C++中使用hash来实现的set,是不能存储重复元素的。在这种背景下,我们使用一个int的空间只是为了存储0和1两个数组。如果我们遇到大数据的情况,空间浪...原创 2019-10-23 19:46:46 · 514 阅读 · 0 评论 -
【哈希表】哈希集合(朴素实现)
一. 问题背景在实际编程中,我们常常面临着两个问题:存储和查询,这两个过程的效率往往制约着整个程序的效率,而我们常见的存储数据的数据结构比如线性表,树,图等,数据在结构中的位置往往是不明确的,当我们在这些数据结构中要查询一个数据,都避免不了去执行查询算法,去遍历数据结构,拿关键字和结构中的数据进行一一比较,从而得到想要的数据,我们就希望能不能不通过比较就能获得我们想要的结果呢?答案是有的,...原创 2019-10-23 19:18:07 · 530 阅读 · 0 评论