给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。
请你找到这个数组里第 k 个缺失的正整数。
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 获取缺失的正整数 * @param array int整型一维数组 已知数组 * @param start int整型 开始数 * @return int整型 */ function getInter( array , start ) { let expectedValue = 1 let count = 0 for (let cur of array) { const miss = cur - expectedValue if (count + miss >= start) return expectedValue + start - count - 1 expectedValue = cur + 1 count += miss } return expectedValue + start - count - 1 } module.exports = { getInter : getInter };
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 获取缺失的正整数 * @param array int整型一维数组 已知数组 * @param arrayLen int array数组长度 * @param start int整型 开始数 * @return int整型 */ int getInter(int* array, int arrayLen, int start) { sort(array, array + arrayLen); int pos = start; if(array[0] != 1) { pos -= array[0] - 1; } // 如果缺少的第 k 个数都在 array[0]之前,那start 就是缺少的第 k 个数 if(pos < 0) { return start; } for(int i = 1; i < arrayLen; i++) { while(array[i] > array[i-1] + 1) { pos--; array[i-1] += 1; if(pos == 0) { return array[i-1]; } } } if(pos > 0) { return array[arrayLen-1] + pos; } return -1; } };
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 获取缺失的正整数 * @param array int整型一维数组 已知数组 * @param start int整型 开始数 * @return int整型 */ // 给的不是严格上升的数组,就预处理了不管了,然后就过了 // function getInter( arr , s ) { let f = new Array(arr[arr.length-1] + s + 1).fill(0) for(let i=1;i<arr.length;i++) { if(arr[i] < arr[i-1]) arr[i] = 0 } for(let i=0;i<arr.length;i++) { if(arr[i] === 0) continue f[arr[i]] = 1 } let n = 0 for(let i=1;;i++) { if(f[i] == 0) n++ if(n === s) return i } } module.exports = { getInter : getInter };
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 获取缺失的正整数 * @param array int整型一维数组 已知数组 * @param start int整型 开始数 * @return int整型 */ function getInter( array , start ) { // write code here var sum = 1; var arr = []; //缺失数的数组 while(true){ if(array[0] == sum){ array.shift() }else{ arr.push(sum) } if(arr.length == start){ break; } sum++ } return arr.pop() } module.exports = { getInter : getInter };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # 获取缺失的正整数 # @param array int整型一维数组 已知数组 # @param start int整型 开始数 # @return int整型 # class Solution: def getInter(self , array , start ): # write code here if not array: return start count = start pre = 0 for v in array: if v <= pre: break if v - pre > count: break else: count = count - (v - pre - 1) pre = v return pre + count