首页 > 其他分享 >LeetCode 448. 找到所有数组中消失的数字(哈希表)

LeetCode 448. 找到所有数组中消失的数字(哈希表)

时间:2024-06-23 13:27:40浏览次数:3  
标签:448 sta nums int 数组 vector 哈希 LeetCode

448. 找到所有数组中消失的数字

在这里插入图片描述

思路:方法一,借助额外的0(n)空间sta进行哈希

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        int n=nums.size();
        vector<int> sta(n,0);
        for(int i=0;i<n;i++){
            sta[nums[i]-1]=1;
        }
        vector<int > v;
        for(int i=0;i<n;i++){
            if(sta[i]!=1) v.push_back(i+1);
        }
        return v;
    }
};

思路:进阶版。方法二,借助数组nums本身的空间进行哈希

class Solution {
public:
    vector<int> findDisappearedNumbers(vector<int>& nums) {
        int n=nums.size();
        for(int i=0;i<n;i++){
        	//用n+1来标记是否存在该元素。
        	//如果当前元素不为n+1,说明当前的nums[i]还未进行标记处理
            if(nums[i]!=n+1){
            	//获得需要处理的元素,减1是因为下标的范围为0~n-1
                int j=nums[i]-1;
                //进行循环处理
                while(nums[j]!=n+1){
                    int tmp=nums[j]-1;
                    nums[j]=n+1;
                    j=tmp;
                }
            }
        }
        vector<int > v;
        for(int i=0;i<n;i++){
            if(nums[i]!=n+1) v.push_back(i+1);
        }
        return v;
    }
};

标签:448,sta,nums,int,数组,vector,哈希,LeetCode
From: https://blog.csdn.net/weixin_46028214/article/details/139899140

相关文章

  • 647. 回文子串(leetcode)
    647.回文子串(leetcode)题目描述给你一个字符串s,请你统计并返回这个字符串中回文子串的数目。回文字符串是正着读和倒过来读一样的字符串。子字符串是字符串中的由连续字符组成的一个序列。示例1输入:s=“abc”输出:3解释:三个回文子串:“a”,“b”,“c”......
  • LeetCode665.非递减数列
    LeetCode刷题记录文章目录......
  • Leetcode 力扣 125. 验证回文串 (抖音号:708231408)
    如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。示例1:输入:s="Aman,aplan,......
  • Leetcode 力扣 128. 最长连续序列 (抖音号:708231408)
    给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums=......
  • LeetCode:经典题之206、92题解及延伸
    系列目录88.合并两个有序数组52.螺旋数组567.字符串的排列643.子数组最大平均数150.逆波兰表达式61.旋转链表160.相交链表83.删除排序链表中的重复元素389.找不同目录系列目录206.反转链表92.反转链表II类和结构体访问修饰符206.反转链表......
  • [集训队互测 2023] 树哈希 题解报告
    [集训队互测2023]树哈希题解报告/bx/bx/bxzky!!!题意给定常数\(q\),定义一棵以\(1\)为根的有根树\(T\)的\(s(T)\)为\(T\)中本质不同的子树数量,定义其权值为\(q^{s(T)}\)。给定\(n\),对于\(i=1,\dots,n\)求所有大小为\(i\)的有标号有根树的权值之和对\(P\)......
  • LeetCode 134加油站,是环路,但我不绕圈,秒了。
    不绕圈是指,不需要看能不能转一圈回到起始点,只需要看能不能到达最后一个元素就行。在做这一道题的时候,如果判断能不能回到出发点,则需要绕一圈再回来,不仅需要创建临时变量,还要频繁使用%n获得余数,非常的不优雅。下面是优化方法:由题目很容易得出,如果存在解,则必定有gas总和大于......
  • LeetCode 2542. 最大子序列的分数(贪心、小顶堆)
    2542.最大子序列的分数思路:先对nums2按降序排列,然后遍历nums2的最小值,同时在区间[0,i]中选中k个最大的nums1即可。然后找出最大的ansclassSolution{public:typedefpair<int,int>PII;longlongmaxScore(vector<int>&nums1,vector<int>&nums2,intk)......
  • LeetCode刷题day3——链表part1
    203.移除链表元素这个题是二刷了一开始这个思路就是利用虚拟头结点,但是中间很多小细节都考虑不到,例如初始化一个新的链表,循环条件的写法等classSolution{public:structListNode{intval;ListNode*next;ListNode(intx):val(x),next(NULL){};//定义构......
  • LeetCode刷题day4——链表part2
    24.两两交换链表中的节点用pre代表第1个节点,cur代表它后面的相邻节点,tmp存储cur->next。但是问题找不到怎么返回新的节点。想着就循环一次,在第一次交换的时候就确认新的头结点。但还存在很多问题,具体如下:classSolution{public:ListNode*swapPairs(ListNode*he......