![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
哈希表
每天学一点!
时刻保持对知识的热情!
展开
-
380. 常数时间插入、删除和获取随机元素
题目描述 设计一个支持在平均时间复杂度 O(1) ,执行以下操作的数据结构。 insert(val):当元素 val 不存在时,向集合中插入该项。 remove(val):元素 val 存在时,从集合中移除该项。 getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。 示例 // 初始化一个空的集合。 RandomizedSet randomSet = new Ran...原创 2019-11-30 17:28:43 · 131 阅读 · 0 评论 -
146. LRU缓存机制
题目描述 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。 写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新...原创 2019-11-25 16:21:18 · 134 阅读 · 0 评论 -
49. 字母异位词分组
题目描述 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。 示例 输入: ["eat", "tea", "tan", "ate", "nat", "bat"], 输出: [ ["ate","eat","tea"], ["nat","tan"], ["bat"] ] 说明: 所有输入均为小写字母。 不考虑答案输出的顺序。 思路 ...原创 2019-11-17 18:58:29 · 110 阅读 · 0 评论 -
3. 无重复字符的最长子串
题目描述 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 abc,所以其长度为3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 b,所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释:...原创 2019-01-25 18:40:53 · 130 阅读 · 0 评论 -
字符流中第一个不重复的字符
题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 如果当前字符流没有存在出现一次的字符,返回#字符。 思路 因为大小写字母的ascii码为: a-z:97-122 A-Z:65-90 所以直接做直方图统计。 ...原创 2019-04-29 13:37:15 · 130 阅读 · 0 评论 -
第一个只出现一次的字符
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路 哈希表。 代码 class Solution { public: unordered_map<char, int> mymap; int FirstNotRepeati...原创 2019-04-08 21:02:40 · 95 阅读 · 0 评论 -
leetcode350. 两个数组的交集 II
题目描述 给定两个数组,编写一个函数来计算它们的交集。 示例 示例 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-08-19 18:25:35 · 106 阅读 · 0 评论 -
leetcode349. 两个数组的交集
题目描述 给定两个数组,编写一个函数来计算它们的交集。 示例 输入: nums1 = [1,2,2,1], nums2 = [2,2] 输出: [2] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结果的顺序。 思路 哈希表。先将nums1放入哈希表,然后遍历nums2,查找nums1中是否存在元素。 注意,当第一次查找成功,要删除该元素,因为要...原创 2019-08-19 17:29:31 · 138 阅读 · 0 评论 -
leetcode242. 有效的字母异位词
题目描述 给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。 示例 输入: s = "anagram", t = "nagaram" 输出: true 思路1 排序。 代码 class Solution { public: bool isAnagram(string s, string t) { sort...原创 2019-08-19 17:17:43 · 80 阅读 · 0 评论 -
leetcode496. 下一个更大元素 I
题目描述 给定两个没有重复元素的数组nums1 和nums2,其中nums1是nums2的子集。找到nums1中每个元素在nums2中的下一个比其大的值。 nums1中数字x的下一个更大元素是指x在nums2中对应位置的右边的第一个比x大的元素。如果不存在,对应位置输出-1。 示例 输入: nums1 = [4,1,2], nums2 = [1...原创 2019-08-18 17:52:50 · 151 阅读 · 0 评论 -
20.有效的括号
题目描述 给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 示例 1: 输入: "()[]{}" 输出: true 示例 2: 输入: "(]" 输出: false 示例 3: 输入: "...原创 2018-11-13 21:32:44 · 125 阅读 · 0 评论 -
复杂链表的复制
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 思路1 具体思路见我另外一篇博文:https://blog.csdn.net/songsong2017/article/details/88640641 ...原创 2019-03-18 19:41:24 · 94 阅读 · 0 评论 -
1. 两数之和
题目描述 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 思路 建立一个unordered_map. 时间复杂度为O(...原创 2018-11-12 10:30:56 · 151 阅读 · 0 评论