哈希表
哈希数组,set和map题
Lc_summer
这个作者很懒,什么都没留下…
展开
-
利用无序映射表(unordered_map)求四数和为0出现的次数
四数相加给定四个包含整数的数组列表 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 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]D = [ 0, 2]输出:2解释:两个元组如原创 2021-02-26 16:35:30 · 197 阅读 · 0 评论 -
利用哈希数组求解string1的所有字符是否都存在string2
赎金信给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)注意:你可以假设两个字符串均只含有小写字母。canConstruct(“a”, “b”) -> falsecanConstruct原创 2021-02-26 16:36:02 · 95 阅读 · 0 评论 -
利用无序映射(unordered_map)求数组中等于target的两个数的下标
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]示例 2:输入:nums = [3,2,4], target = 6输出:[1,2]示例 3:输入:nums = [3,3], target = 6输出:[0,原创 2021-02-26 16:33:55 · 212 阅读 · 0 评论 -
利用无序集合(unordered_set)判断快乐数
快乐数编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 true ;不是,则返回 false示例 1:输入:19输出:true解释:1 * 1 + 9 * 9 = 828 * 8 + 2 * 2 = 686 * 6 + 8 * 8 = 1001 * 1 + 0 * 0 + 0原创 2021-02-26 16:32:58 · 134 阅读 · 0 评论 -
利用无序集合(unordered_set)求数组的交集
两个数组的交集给定两个数组,编写一个函数来计算它们的交集。示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2]输出:[2]示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出:[9,4]思路先将nums1元素复制到无序集合numsSet1中,然后遍历nums2的元素将存在于numsSet1中的数插入到无序集合resultSet中,最后将resultSet中的元素复制到vector中;vector<int> i原创 2021-02-26 16:32:11 · 1185 阅读 · 0 评论 -
采用哈希数组判断两个字符串是否异构
有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例 1:输入: s = “anagram”, t = “nagaram”输出: true示例 2:输入: s = “rat”, t = “car”输出: false说明:你可以假设字符串只包含小写字母。思路采用哈希表,哈希表用数组构建,下表为字符与‘a’的相对大小,数组值为字符出现的次数,先遍历s,记录每个字符出现的次数,然后再遍历t,减去t中出现的字符数,最后判断数组中的所有值是否都为0原创 2021-02-26 12:39:49 · 149 阅读 · 0 评论