1539. 第 k 个缺失的正整数 - 力扣(LeetCode)
给你一个 严格升序排列 的正整数数组
arr
和一个整数k
。请你找到这个数组里第
k
个缺失的正整数。示例 1:
输入:arr = [2,3,4,7,11], k = 5 输出:9 解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。示例 2:
输入:arr = [1,2,3,4], k = 2 输出:6 解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。提示:
1 <= arr.length <= 1000
1 <= arr[i] <= 1000
1 <= k <= 1000
- 对于所有
1 <= i < j <= arr.length
的i
和j
满足arr[i] < arr[j]
class Solution {
public int findKthPositive(int[] arr, int k) {
int num = 1;
int len = arr.length;
int count = 1;//记录已经缺了几个数
for(int i = 0 ; i < len ; i++) {
if(arr[i] != num) {
while(arr[i]!=num) {
num++;
count++;
if(count == k) break;
}
}
if(count==k) break;
num++;
}
return num+k-count;
}
}
每日一题,今天是简单题。
这道题其实模拟就可以做出来了。用num模拟数字,用count模拟寻找的次数。一旦count到达相应的次数就可以跳出来了。而能用num模拟数字,主要是因为数组是严格递增的。
简单写完,是周六,大家休息一下吧。也可以去题解处看看更快的解法。