【力扣】17.04.消失的数字

这道题的题目意思就是从0-n中的数字中找出缺失的那一个,n是数组的长度,因此我的想法就是先将数组进行排序,往sort()里面一扔,完了以后看前一个与后一个之差中哪个不是等于1的,就求出来即可。

法一:

也就是我自己的想法

cpp 复制代码
class Solution {
public:
    int missingNumber(vector<int>& nums) {
        //首先排序,然后再找
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size();i++){
            cout<<nums[i];
        }
        cout<<endl;
        int n=nums.size();
        //考虑最后一个数不在其中的情况
        if(nums[n-1]!=n) return n;
        //主要是考虑0-n之间的缺数的情况
        for(int i=1;i<n;i++){
            if(nums[i]-nums[i-1]!=1){
                cout<<nums[i]<<nums[i-1];
                return (nums[i]+nums[i-1])/2;
            }
        }
        return 0;
        }
        
};

还有两个方法:

  • 一个是把它扔到unordered_set里面,利用其count()方法+循环遍历看差了哪个就行
  • 以及就是我们用和之差的方式,就是求在没有缺失的情况下的S,也就是和,然后与缺失了?数字相减,即可得到
cpp 复制代码
class Solution {
public:
    int missingNumber(vector<int>& nums) {
        int miss=-1;
        unordered_set<int>set;
        int n=nums.size();
        for(int i=0;i<n;i++){
            set.insert(nums[i]);
        }
        for(int i=0;i<=n;i++){
            if(!set.count(i)){
                miss=i;
                break;
            }
        }
        return miss;
        }
        
};
相关推荐
leobertlan6 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
青梅橘子皮6 小时前
C语言---指针的应用以及一些面试题
c语言·开发语言·算法
_Evan_Yao6 小时前
技术成长周记06|面试中看清差距,新项目点燃热情
面试·职场和发展
_深海凉_8 小时前
LeetCode热题100-有效的括号
linux·算法·leetcode
被开发耽误的大厨10 小时前
1、==、equals、hashCode底层原理?重写场景?
算法·哈希算法
haina201910 小时前
《品牌观察》专访海纳AI:引领AI面试测评新时代
人工智能·面试·职场和发展
WolfGang00732111 小时前
代码随想录算法训练营 Day38 | 动态规划 part11
算法·动态规划
Raink老师11 小时前
【AI面试临阵磨枪】什么是 MCP(Model Control Protocol)、A2A(Agent-to-Agent)协议?
人工智能·面试·职场和发展·ai 面试
松☆12 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
久菜盒子工作室12 小时前
面试|产品经理|为什么从 xxx(主要是实习 、工作)离职?
面试·职场和发展·产品经理