给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。
请你找到这个数组里第 k 个缺失的正整数。
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 获取缺失的正整数
* @param array int整型一维数组 已知数组
* @param start int整型 开始数
* @return int整型
*/
public int getInter (int[] array, int k)
{
int n = array.length;
int index = 0;
int curr = 1;
while (k > 0)
{
if (index == n)
return array[n - 1] + k;
if (curr == array[index])
index++;
else
k--;
curr++;
}
return curr - 1;
}
} /**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 获取缺失的正整数
* @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