企业做网站公司有哪些,网上建网站,建网站学什么软件,网站怎样防止攻击题目
LCR 173. 点名 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席#xff0c;请返回他的学号。 示例 1#xff1a; 输入#xff1a;records [0,1,2,3,5] 输出#xff1a;4 示例 2#xff1a; 输入#xff1a;records [0, …题目
LCR 173. 点名 某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席请返回他的学号。 示例 1 输入records [0,1,2,3,5] 输出4 示例 2 输入records [0, 1, 2, 3, 4, 5, 6, 8] 输出7 提示 节点总数 10000 解法
由于有 n 位同学学号为 0~n-1如果将其放置于数组中其数值下标应该和元素一一对应如果有一位同学缺席那么从这个同学的位置开始数值下标和元素就不一一对应了所以我们要找到这个边界在边界的左侧数组下标与元素相等在边界的右侧数组的下标与边界不相等一般会联想到二分查找当 middle 处下标与元素相等时边界在 middle 的右边当 middle 处下标与元素不相等且 middle-1 处下标与元素相等时middle 即为边界其他情况说明边界在 middle 的左边二分的具体写法可以参考《二分查找的梳理——边界初始值、循环条件、边界更新》 class Solution {
public:int takeAttendance(vectorint nums) {if(nums[0]!0) return 0;int l0, rnums.size()-1;while(lr){int ml(r-l)/2;if(nums[m]m) lm1;else if(nums[m]!m nums[m-1]m-1){lm;break;}else rm-1;}return l;}
};