- 第 k 个缺失的正整数
难度
简单
给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。
请你找到这个数组里第 k 个缺失的正整数。
示例 1:
输入:arr = [2,3,4,7,11], k = 5 输出:9 解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,...] 。第 5 个缺失的正整数为 9 。 示例 2: 输入:arr = [1,2,3,4], k = 2 输出:6 解释:缺失的正整数包括 [5,6,7,...] 。第 2 个缺失的正整数为 6 。
提示:
1 <= arr.length <= 1000
1 <= arr[i] <= 1000
1 <= k <= 1000
对于所有 1 <= i < j <= arr.length 的 i 和 j 满足 arr[i] < arr[j]
通过次数19,961提交次数37,004
代码
int findKthPositive(int* arr,int arrSize,int k){
//int* b =malloc(sizeof(int)*1001); //c,#include
int *b=new int[1001]; //c++#include
for(int i=0;ib[j] && jb[arrSize-1]){//j超过数组时用这个
j=arrSize-1;
x=k-b[j];
y=x+arr[j];
return y;
}
x=k-b[j];
y=x+arr[j]-1;
return y;
}
完整测试代码-b包括用例`
//leetcode 1539 第k个缺失的正数 #includeusing namespace std; int findKthPositive(int* arr,int arrSize,int k){ //int* b =malloc(sizeof(int)*1001); int *b=new int[1001]; for(int i=0;ib[arrSize]) b //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 //0 1 2 3 j //1 2 3 4 k=2 arr //0 0 0 0 # b //0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 0 1 2 3 4 j // 2 3 4 7 11 k=5 arr // 1 1 1 3 6 b while(k>b[j] && jb[arrSize-1]){//j超过数组时用这个 j=arrSize-1; x=k-b[j]; y=x+arr[j]; return y; } x=k-b[j]; y=x+arr[j]-1; return y; } int main(){ int arr[10]={1,2,5,8,9,11,15,16}; int brr[9]={5,6,7,9,11,12,14,15,16}; int crr[11]={1,2,3,4,5,7,8,9,11,15,16}; int drr[11]={1,2,3,4,7,8,9,11,15,16}; cout<<"kkk a:"< 提交记录



