leetcode1539
第 k 个缺失的正整数
Category Difficulty Likes Dislikes
algorithms Easy (54.07%) 157 -
Tags
Companies
给你一个 严格升序排列 的正整数数组 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]
进阶:
你可以设计一个时间复杂度小于 O(n) 的算法解决此问题吗?
Discussion | Solution
class Solution {
public:
// 数组是严格递增的
// 利用严格递增和数组的特性,可以知道在某个位置。利用这个位置上的值arr[idnex]和这个位置index做差额,可以得到1-arr[index]之间缺了多少个值
int findKthPositive(vector<int>& arr, int k) {
int l = 0, r = arr.size() - 1;
while(l < r)
{
int mid = l + ((r-l)>>1);
if((arr[mid]-mid-1) < k)
l = mid + 1;
else
r = mid;
}
if(l == arr.size()-1 && (arr[l]-l-1) < k)
return l+1+k;
if(l == 0)
return k;
return l + k;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义