• Leetcode刷题详解——点名


    1. 题目链接:LCR 173. 点名

    2. 题目描述:

    某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席,请返回他的学号。

    示例 1:

    输入: records = [0,1,2,3,5]
    输出: 4
    
    • 1
    • 2

    示例 2:

    输入: records = [0, 1, 2, 3, 4, 5, 6, 8]
    输出: 7
    
    • 1
    • 2

    提示:

    1 <= records.length <= 10000
    
    • 1

    3. 解法1(二分查找):

    3.1 解题思路

    在第一个缺失位置的左边,数组内的元素都是与数组的下标相等的

    在第一个缺失位置的右边,数组内的元素与数组下标是不相等的

    请添加图片描述

    3.2 C++算法代码:

    class Solution {
    public:
        int takeAttendance(vector& records) {
            int left=0,right=records.size()-1;
            while(left
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4. 解法2(直接遍历):

    4.1 解题思路:

    用完整的数组的和减去缺少一个数的数组的和就可以求出那个缺少的数

    4.2 C++算法代码:

    class Solution {
    public:
        int takeAttendance(vector& records) {
            int sum=0,sum_arr=0;
            for(int i=0;i<=records.size();i++)
            {
                sum+=i;
                if(i
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 相关阅读:
    javeEE高校专业实训评价系统ssm
    4- 24
    web前端-HTML图像,表格,列表的使用
    EthernetIP IO从站设备数据 转opc ua项目案例
    window.location
    计算全排列
    Linux常见指令
    『python爬虫』xpath变化导致无法找到指定元素(持续更新中~)
    常用排序算法详解
    安装jdk、tomcat、mysql
  • 原文地址:https://blog.csdn.net/weixin_51799303/article/details/134043057