代码:
这个是用二分查找的版本
可以从arr[i] 的值和i两个变量直接获得到i为止缺失了多少个正整数
class Solution {public int findKthPositive(int[] arr, int k) {int n = arr.length;int l=0,r=n-1;while(l<=r){int m = l + (r - l + 1)/2;if(arr[m]-m-1==k){l = m;r = m;break;}else if(arr[m]-m-1<k){l = m + 1;}else{r = m - 1;}}while(l-1>0&&l<n&&arr[l]== arr[l-1]+1){l--;}if(l>0){return k - (arr[l - 1] - (l - 1) - 1) + arr[l - 1];}else if(arr[0]>k)return k;else return k-1; }
}