仿做静态网站多少钱,域名交易网站哪个好,软件开发专业课程有哪些,wordpress 微信 推送一、题目
某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席#xff0c;请返回他的学号。 示例 1:
输入: records [0,1,2,3,5]
输出: 4示例 2:
输入: records [0, 1, 2, 3, 4, 5, 6, 8]
输出: 7 提示#xff1a;
1 records…一、题目
某班级 n 位同学的学号为 0 ~ n-1。点名结果记录于升序数组 records。假定仅有一位同学缺席请返回他的学号。 示例 1:
输入: records [0,1,2,3,5]
输出: 4示例 2:
输入: records [0, 1, 2, 3, 4, 5, 6, 8]
输出: 7 提示
1 records.length 10000 二、思路解析
类似 “缺失的数字” 这种题都会有 二段性 这个性质十分适合用 二分查找 来解答。
观察数据我们便可以发现这道题的二段性 ▪ 在第⼀个缺失位置的左边数组内的元素都是与数组的下标相等的 ▪ 在第⼀个缺失位置的右边数组内的元素与数组下标是不相等的。 最后的返回值也需要注意一下因为我是从 0 下标开始寻找的所以要是找到那个缺失的数就得返回它没找到则返回 数组最后元素 1缺失的数是最后一个。 三、完整代码
class Solution {public int takeAttendance(int[] records) {int left 0;int right records.length - 1;while(left right){int mid left (right - left - 1) / 2;if(mid records[mid]){left mid 1;}else{right mid;}}return left records[left] ? records[left] 1 : left;}
} 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步