![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
原地哈希
文章平均质量分 50
weixin_43842888
这个作者很懒,什么都没留下…
展开
-
【原地哈希】LeetCode - 41.缺失的第一个正数
题目描述题目链接解法首先想到的是哈希,本题哈希的思路如下:假设原始数组为 A。先构造一个临时数组 tmp,初始化为 0,大小为A.size(). 遍历 A,把 A[i] 复制到 tmp[A[i]-1] 的位置。如果 A[i] - 1 超过了 tmp 的范围,就直接扔掉。如此一来,tmp[0…size) 中就保存了一部分 A 的值。然后从位置 0 开始检查 tmp,如果发现该位置的值和索引号不匹配,就说明找到了缺失的数了但是题目要求严格的空间复杂度了,那就原地哈希,准确的说是原地置换的思路和算法,原创 2021-02-13 22:20:22 · 81 阅读 · 0 评论 -
【原地哈希】剑指Offer 03.数组中重复的数字
题目描述解法1:原地哈希思路: 如果没有重复数字,那么正常排序后,数字i应该在下标为i的位置,所以思路是重头扫描数组,遇到下标为i的数字如果不是i的话,(假设为m), 那么我们就拿与下标m的数字交换。在交换过程中,如果有重复的数字发生,那么终止返回tureclass Solution {public: int findRepeatNumber(vector<int>& nums) { int len=nums.size(),tmp; fo原创 2021-02-13 21:58:38 · 80 阅读 · 0 评论 -
【原地哈希】LeetCode - 442.数组中重复的数据
题目描述解法由条件1 ≤ a[i] ≤ n,可知出nums 中的所有值可以和其索引有对应关系对应关系为 nums[i]的正负值可表示 值为i + 1是否出现,若出现则将其变为加上负号,即 nums[i] *= -1,默认为正整数即未出现比如输入:4 3 2 2 8 7 3 1依次遍历时遇见的4 3 2,把nums[3],[2],[1]都取负值变成了4 -3 -2 -2 8 2 3 1当遇到第二个2时,访问nums[1]发现值为负,说明2是重复出现的数class Solution {pub原创 2021-02-13 21:50:44 · 85 阅读 · 0 评论