给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。
请你找到这个数组里第 k 个缺失的正整数。
示例 1:
输入:arr = [2,3,4,7,11], k = 5输出:9解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。
题解
由题可知,最简单的办法其实就是暴力求解,直接循环while然后算出数量,这样感觉不太优雅,而且次数会比较多,所以直接循环当前的数组,计算出数组每次跟前面的差距,然后根据差距来写入数据
/**
* @param {number[]} arr
* @param {number} k
* @return {number}
*/
var findKthPositive = function(arr, k) {
let num = 0;
let pre = 0;
for (n of arr) {
const temp = n - pre - 1 + num;
if (temp >= k) {
return n - (temp - k + 1);
}
pre = n;
num = temp;
}
return arr[arr.length - 1] + k - num;
};
