给你一个 严格升序排列 的正整数数组 arr 和一个整数 k
请你找到这个数组里第 k 个缺失的正整数。

示例 1:

  1. 输入:arr = [2,3,4,7,11], k = 5
  2. 输出:9
  3. 解释:缺失的正整数包括 [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;
};