admin管理员组文章数量:1516870
点名(缺失的数字),剑指offer,力扣
目录
我们直接看题解吧:
审题目+事例+提示:
方法:
解题思路(二分法):
代码:
方法二:直接遍历
题目地址
LCR 173. 点名 - 力扣(LeetCode)
今天刷点名(缺失的数字),大家有兴趣可以点上看看题目要求,试着做一下。
我们直接看题解吧:
审题目+事例+提示:
record为升序数组
方法:
遇到排序数组的搜索问题,首先想到二分法
解题思路(二分法):
依据题意,我们可以把数组分为两部分,
左子数组,record[i]=i
右子数组,record[i]!=i
所以,缺失的数字其实就是右子数组的首元素。
- 初始化i=0即左边界,j=length-1,即右边界
- 循环二分:当i<=j时跳出循环
·计算中点m=(i+j)/2(向下取整)
·record[m]==m,即缺失数字在[m+1,j],则i=m+1
·record[m]!=m,即缺失数字在[i,m-1],则j=m-1
3、最后跳出循环,i指向位置为缺失的数字
代码:
class Solution {public int takeAttendance(int[] records) {int i = 0, j = records.length - 1;while(i <= j) {int m = (i + j) / 2;if(records[m] == m) i = m + 1;else j = m - 1;}return i;}
}
方法二:直接遍历
class Solution {public int missingNumber(int[] nums) {if (nums[0]==1) return 0;for (int i = 0;i<nums.length;i++){if (nums[i]!=i) return i;}return nums.length;}
}
本文标签: 点名(缺失的数字),剑指offer力扣
版权声明:本文标题:点名(缺失的数字),剑指offer,力扣 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1700270315a298334.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论