【力扣】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;
        }
        
};
相关推荐
折哥的程序人生 · 物流技术专研36 分钟前
Java面试85题图解版 · 特别篇:2026后端高频面试题复盘(算法底层逻辑+高并发架构设计全解析,附Java实战代码)
java·网络·数据库·算法·面试
想吃火锅10052 小时前
【leetcode】14.最长公共前缀js
算法·leetcode·职场和发展
云絮.3 小时前
数据库操作
数据库·mysql·算法·oracle
小林ixn3 小时前
LeetCode 206. 反转链表(迭代 + 递归详解)
算法·leetcode·链表
凡人叶枫4 小时前
Effective C++ 条款17:以独立语句将 newed 对象置入智能指针
java·linux·开发语言·c++·算法
我爱cope5 小时前
【Agent智能体26 | 多智能体-多智能体工作流】
人工智能·设计模式·语言模型·职场和发展
菜鸟‍5 小时前
LeetCode 1 27 和 704 || 两数之和 移除元素 二分查找
算法·leetcode·职场和发展
退休倒计时6 小时前
【每日一题】LeetCode 142. 环形链表 II TypeScript
算法·leetcode·链表·typescript
popcorn_min6 小时前
Digits 手写数字识别:随机森林多分类 + 像素级特征热力图
算法·随机森林·分类
liulilittle7 小时前
拥塞控制:排水终止的两种决策:OR 与 AND
网络·tcp/ip·计算机网络·算法·信息与通信·tcp·通信