类型总结之——哈希表
哈希表
Mona______
好好学习天天向上 o(≧v≦)o
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
哈希表总结点睛
哈希表 又称 散列表、 Hash table。哈希表就是根据关键吗的值而直接进校访问的数据结构 其实数组就是一张哈希表,数组的索引为key,数组的元素为value。 数据规模是dataSize, 哈希表的大小为tableSize 哈希表能解决什么问题呢? 一般是用来快速判断一个元素是否出现集合里。 哈希碰撞有两种解决办法: 1、拉链法:拉链法就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内存,也不会因为链表太长而在查找上浪费太多时间。 2、线性探测法:使用线性探测法,一定要保证tab原创 2021-04-23 20:58:08 · 1152 阅读 · 0 评论
-
leetcode——第146题——LRU缓存机制
题目: 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。 实现 LRUCache 类: LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。 void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-值」。当缓存容量达到上限时,它应该在写入新数据之前原创 2021-07-02 09:16:50 · 308 阅读 · 0 评论 -
leetcode——第3题——最长不含重复字符
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 /* 子字符串:表示得是连续的 考察点: 1、哈希表 unordered_set 2、双指针 3、也可以用滑动窗口,滑动窗口其实就是一种双指针。 */ class Solution { public: int lengthOfLongestSubstring(string s) { // 因为要不重复,所以首先想到用哈希表,因为字符较多,所以数组不想,又因为不需要与下标关联,所以使用哈希集合足够,原创 2021-06-10 20:11:34 · 124 阅读 · 0 评论 -
leetcode——第249题——移位字符串分组
题目: 给定一个字符串,对该字符串可以进行 “移位” 的操作,也就是将字符串中每个字母都变为其在字母表中后续的字母,比如:“abc” -> “bcd”。这样,我们可以持续进行 “移位” 操作,从而生成如下移位序列: “abc” -> “bcd” -> … -> “xyz” 给定一个包含仅小写字母字符串的列表,将该列表中所有满足 “移位” 操作规律的组合进行分组并返回。 示例: 输入:[“abc”, “bcd”, “acef”, “xyz”, “az”, “ba”, “a”, “z”]原创 2021-06-10 14:21:35 · 559 阅读 · 0 评论 -
leetcode——第49题——字母异位词分组
题目: 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例: 输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [ [“ate”,“eat”,“tea”], [“nat”,“tan”], [“bat”] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 /* 本题感觉在联系 哈希映射的嵌套关系 对内层的处理还是很不容易想到的,使用到了 emplace_back() */ class Solution {原创 2021-06-10 14:20:17 · 201 阅读 · 0 评论 -
leetcode——第1002题——查找常用字符
题目: 给定仅有小写字母组成的字符串数组 A,返回列表中的每个字符串中都显示的全部字符(包括重复字符)组成的列表。例如,如果一个字符在每个字符串中出现 3 次,但不是 4 次,则需要在最终答案中包含该字符 3 次。 你可以按任意顺序返回答案。 /* 1、刚开始懵在了 输入字符串 string 注意这里的输入形式是 vector<string> ,而不是 string 因此 每个逗号隔开的都是一个字符串咯 2、有点机智的处理 把比较多个字符串的最小频率,转换成比较第一个和其他 然后再其他的处理上原创 2021-06-09 20:50:42 · 194 阅读 · 0 评论 -
leetcode——第205题——同构字符串
题目: 给定两个字符串 s 和 t,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。 class Solution { public: // // 解法一:使用 count 来实现的 // bool isIsomorphic(string s, string t) // {原创 2021-06-08 20:17:26 · 335 阅读 · 1 评论 -
leetcode——第290题——单词规律
题目: 给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。 这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。 class Solution { /* 感觉不是很会哎~~需要再多刷一下这个题 刚开始我还想判断这个,艾玛呀,这两个字符创的长度肯定不同的嘛!!! 字符串的大小就是包含的字符的个数,s 肯定是比 pattern 大的呀 ~~~ // if(pattern.size() != s.si原创 2021-06-08 19:56:33 · 254 阅读 · 2 评论 -
leetcode——第18题——四数之和/双指针法
题目: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 注意:答案中不可以包含重复的四元组。 ...原创 2021-04-23 20:54:15 · 137 阅读 · 0 评论 -
leetcode——第15题——三数之和/双指针
题目: 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 class Solution { public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result;原创 2021-04-23 20:45:20 · 135 阅读 · 0 评论 -
leetcode——第383题——使用数组来实现哈希表
题目: 给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。 (题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。) class Solution { public: bool canConstruct(string ransomNote, stri原创 2021-04-23 19:10:57 · 194 阅读 · 0 评论 -
leetcode——第454题——四数相加unordered_map
题目: 给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4)原创 2021-04-23 16:48:47 · 167 阅读 · 0 评论 -
leetcode——第1题——两数之和unordered_map容器的插入查找
题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 #include <iterator> // distance class Solution { public: vector<int> twoSum(vector<int>& nums,原创 2021-04-23 15:37:10 · 220 阅读 · 0 评论 -
leetcode——第202题——成员函数+unoedered_set+快乐数
题目: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 true ;不是,则返回 false 。 class Solution { public: // 这里写成个函数真是妙吖吖~我自己很难会想到写成一个函数 // 但是后面要调用这个很多很多次,所以把它写成函数是最原创 2021-04-22 21:20:48 · 196 阅读 · 0 评论 -
leetcode——第349题——unordered_set的使用
题目: 给定两个数组,编写一个函数来计算它们的交集。 示例 1: 输入:nums1 = [1,2,2,1], nums2 = [2,2] 输出:[2] class Solution { public: vector<int> intersection(vector<int>& nums1, vector<int>& nums2) { unordered_set<int> numSet1{nums1.begin(),num原创 2021-04-22 20:46:42 · 235 阅读 · 0 评论 -
leetcode——第242题——数组当做哈希表
题目 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词 示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true class Solution { public: bool isAnagram(string s, string t) { // result 数组记录的不是每个字母。 // 两个字符串都遍历一遍,第一次遍历计+1,第二次遍历计数-1 // 这样如果相等,则result就是原创 2021-04-21 11:30:47 · 135 阅读 · 0 评论
分享