
哈希表
加油开心
你好呀
展开
-
leetcode:检查两颗二叉表达式树是否等价
请问两种情况一样吗?traverse都是void,里面都要改变值。没必要两个哈希表,还有两个traverse函数。不一样,第一种不会改变i的值,第二种会的。直接把哈希表当作参数传进去就可以了。这题遇到一个你有点疑惑的。看起来难,但经不起推敲。这题你写的有点复杂了。原创 2024-10-05 14:11:28 · 292 阅读 · 0 评论 -
leetcode:丢失的数字
就是比如9,1,2等等,第一个数字9映射到9位置,改为-1,然后不断接力。最后遍历一遍找到不是-1那个位置就是我们要的。这个题我开始想的是比较高级的方法,映射。方法很多,以下注释写了很多。原创 2024-10-05 13:11:20 · 193 阅读 · 0 评论 -
leetcode:在受污染的二叉树中查找元素
然后find函数里直接查hashset有没有即可。思路就是这题利用了完全二叉树编号性质。同时用一个hashset记录值。先把二叉树值都遍历填充一边。这道题是个设计类的题。函数需要被调用很多次。原创 2024-09-26 16:10:43 · 177 阅读 · 0 评论 -
leetcode:连续的子数组和
不知道这个定理怎么用,这个题无法高效解决。但是要用到一个定理,同余定理。这题说他难吧,真不难。原创 2024-09-23 15:24:45 · 264 阅读 · 0 评论 -
leetcode:和为K的子数组
不过你要记住一点,前缀和不一定非要用数组。原创 2024-09-19 16:45:21 · 220 阅读 · 0 评论 -
leetcode:黑名单中的随机数
那1难道映射到4位置处?不行,所以要判断你映射处的位置是不是黑名单数。还有一个问题,如果本身黑名单数就在末尾,那自然不用映射。这样随机到了1,那么他的映射是4,则随机数是4。随机到了2,那不在黑名单不用查表,直接就是2。比如0,1,2,3,4,黑名单是1,3。比如还是上面5个数,黑名单是1,3,4。自然,3和4不用映射,本来就在数组末尾。建一个哈希表,只需要把1映射到4处。就是把黑名单数放到数组末尾。原创 2024-08-20 14:14:30 · 280 阅读 · 0 评论 -
leetcode:O(1)时间插入、删除和获取随机元素
这题需要哈希表配合数组一起来。牵扯到随机性那就得数组了。删除的话,交换到末尾删除。比如下图,你要删除元素7。先获取7元素的索引,为3。然后将末尾元素索引改为3。原创 2024-08-20 13:55:54 · 226 阅读 · 0 评论 -
leetcode:易混淆数
最后二者相加,比较是否和原来相等即可。我的思路是双指针,一个开头一个结尾。有的话,根据后面求出前半部分对称数。哈希表存的数都有自己的对称数。根据前面求出后半部分对称数。没有的话直接false。原创 2024-08-09 14:47:07 · 190 阅读 · 0 评论 -
leetcode:中心对称数
就是要观察,找出规律。原创 2024-08-09 13:20:30 · 177 阅读 · 0 评论 -
leetcode:字母异位词分组
键是hash值,值是计算得到该值的字符串。原创 2024-08-07 14:12:38 · 197 阅读 · 0 评论 -
leetcode:有效的字母异位词
只不过建一个哈希表,依次加入进去,思维和下面一样的。这是剑指offer上的题。如果是unicode的话。原创 2024-08-07 13:30:47 · 182 阅读 · 0 评论 -
leetcode:存在重复元素 II
很经典的一道滑动窗口题。原创 2024-08-05 16:49:56 · 190 阅读 · 0 评论 -
leetcode:存在重复元素
也可以用哈希表,元素插入到哈希表中,如果已经存在了,返回true。还可以排序,然后逐一判断即可。原创 2024-08-05 15:33:56 · 178 阅读 · 0 评论 -
leetcode:快乐数
这个哈希表不会很大,因为最大数全是999999999,每一位平方和也不过1000左右。只要在计算过程中出现37或者73数字,那就不可能会有结果了。每计算出一个结果加到哈希表里,下一个结果在哈希表找到一样的。慢走一步,快走两步,二者相遇则false。如果没出现,那我们到底要算多少次呢?哈希表最大也才1000,这是极端情况。大量实践证明,差不多十多次就可以了。原创 2024-08-05 15:19:09 · 137 阅读 · 0 评论 -
leetcode:Excel表列序号
只是你没意识到你写的就是进制转换代码。新建一个哈希表,存26字母及其值。官方给的答案是26进制转10进制。然后字符串逐一取出值计算即可。和你的思路其实一样的。原创 2024-07-30 12:55:54 · 130 阅读 · 0 评论 -
leetcode:重新放置石块(每日一题)
哈希表并不是按照你插入的顺序排的。而是自己的算法排的,不是有序的。就是写的过程中,误解了。原创 2024-07-24 11:39:03 · 133 阅读 · 0 评论 -
leetcode:同构字符串
一个元素映射一个,不能映射同一个,不能一个映射多个,全部都得有映射。如果s1某一位置处是连续相同字符,那s2该位置处也是连续相同字符。如果s1某一位置是单一字符,那s2该位置处也是单一字符。这个题当时没做出来,主要是没理解映射。foo和oof为啥不行。o也映射到这个0,不行。就是考你映射数学知识。原创 2024-07-19 13:46:54 · 154 阅读 · 0 评论 -
leetcode:大于等于顺序前缀和的最小缺失整数
题目要求的是求出:返回 nums 中没有出现过的 最小 整数 x ,满足 x 大于等于 最长 顺序前缀的和。后面的789就不算,只算123,当时看题速度快,导致做了半天没做出来。也就是说找出一个数比sum大,且表里不能包含sum。他说的是前缀和,意思就是只有从开头开始的。需要用到哈希表,用于快速查值是否存在。这个题我当时看懂题了,但没完全看懂。用前缀和和数组最大值相比,分类讨论。比如1,2,3,1,7,8,9。先求出前缀和,然后就是逐一判断。直接判断表里有没有包含即可。原创 2024-07-13 16:12:09 · 135 阅读 · 0 评论 -
leetcode:罗马数字转整数
【代码】leetcode:罗马数字转整数。原创 2024-07-06 15:53:55 · 246 阅读 · 0 评论 -
leetcode:下一个更大元素I
就是nums1中元素的下一个更大,要在nums2先找到该元素,然后再nums2中求下一个更大。可以先建立一个哈希表,存储nums2中元素与其映射,然后根据nums1查找哈希表即可。常规做法就是for循环遍历nums1中每一个元素,求其在nums2中的下一个更大。就是nums1中元素的下一个更大。相对于单一数组求下一个更大元素。但这样做时间复杂度n平方。原创 2024-04-05 09:54:29 · 194 阅读 · 0 评论