LeetCode :LCR 173. 点名


🔥个人主页guoguoqiang. 🔥专栏leetcode刷题


LeetCode :LCR 173. 点名

这个题就是缺失的数字,我们可以通过三种方式来解决这个问题。

1.可以通过位异或的方式来找到这个数(相同的数异或为0)

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
        int ret=0;
        for(auto n:records) ret^=n;//遍历整个数组
        for(int i=0;i<=records.size();i++){//遍历全部数
            ret^=i;
        }
        return ret;
    }
};

2.通过哈希表来实现(观察这个题中的数据可以通过使用数组来实现)

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
        int hash[10001]={0};
        for(auto ch:records) hash[ch]++;
        for(int i=0;i<=records.size();i++){//遍历数
            if(!hash[i]) return i;//如果不在哈希表中说明就是缺失的那个值。
        }
        return -1;//leetcode的检查机制
    }
};

3.二分查找

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
        int left=0,right=records.size()-1;
        while(left<right){
            int mid=left+(right-left)/2;
            if(records[mid]==mid) left=mid+1;//如果相等则证明不是要找这个数跳过
            else right=mid;
        }
        if(records[left]!=left) return left;//缺失值在数组中间
        else return left+1;//缺失值在数组的最后一个位置
    }
};

4.暴力搜索

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
        if(records[0]==1) return 0;
        int n=records.size();
        for(int i=0;i<n;i++){
            if(records[i]!=i) return i;
        }
        return records.size();
    }
};

5.数学(高斯求和公式)

cpp 复制代码
class Solution {
public:
    int takeAttendance(vector<int>& records) {
      int n=records.size();
      int sum=0;
      for(auto &x:records){
        sum+=x;
      }
      return (n+1-1)*(n+1)/2-sum;
    }
};
相关推荐
MATLAB代码顾问39 分钟前
多种时间序列预测算法的MATLAB实现
开发语言·算法·matlab
PPT百科1 小时前
PPT插入的音乐怎么让它播放到某一页就停?
大数据·职场和发展·powerpoint·职场·ppt模板
m0_736927041 小时前
2025高频Java后端场景题汇总(全年汇总版)
java·开发语言·经验分享·后端·面试·职场和发展·跳槽
高山上有一只小老虎2 小时前
字符串字符匹配
java·算法
愚润求学2 小时前
【动态规划】专题完结,题单汇总
算法·leetcode·动态规划
林太白3 小时前
跟着TRAE SOLO学习两大搜索
前端·算法
ghie90903 小时前
图像去雾算法详解与MATLAB实现
开发语言·算法·matlab
云泽8083 小时前
从三路快排到内省排序:探索工业级排序算法的演进
算法·排序算法
weixin_468466854 小时前
遗传算法求解TSP旅行商问题python代码实战
python·算法·算法优化·遗传算法·旅行商问题·智能优化·np问题
·白小白4 小时前
力扣(LeetCode) ——43.字符串相乘(C++)
c++·leetcode