示例:
输入:arr = [2,3,4,7,11], k = 5
输出:9
解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。
输入:arr = [1,2,3,4], k = 2 输出:6 解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。
解决方法:
最开始是用了额外空间去实现,但最后执行出错,不清楚问题出现在哪里?希望 大佬告知。
class Solution {
public int findKthPositive(int[] arr, int k) {
if(arr == null || arr.length == 0) return 0 ;
int [] temp = new int [1000] ;
for(int i=0;i
正确代码部分:
package Class02;
public class LeetCode_1539_Find_K_Misnumber {
public int findKthPositive(int[] arr, int k) {
if(arr == null || arr.length == 0) return 0 ;
int i = 0 ;
int cur = 1 ; //当前应该出现的值。从1 开始。
int misount = 0 ;
while(i < arr.length ) {
if(arr[i] != cur) {
misount ++;
if(misount == k) {
return cur ;
}
cur ++ ; //放在return cur后面。放在前面就把cur ++的值返回了
} else {
cur ++;
i ++;
}
}
return cur + k - misount -1 ; //运行到最后时 cur ++了
}
}



