C++程序 在已排序数组中查找第K个缺失元素
给定递增序列 a[] ,我们需要找到递增序列中第K个缺失的连续元素,其中该元素不在序列中。如果不存在第K个缺失的元素,则输出-1。
示例:
方法1: 开始迭代数组元素,对于每个元素检查下一个元素是否连续,如果不是,则取这两个元素之间的差,并检查该差是否大于或等于给定的K,如果是,则计算ans = a[i]+count,否则继续迭代下一个元素。
输出
时间复杂度: O(n),其中n是数组中元素的数量。
空间复杂度: O(1),因为没有使用额外的空间。
方法2:
应用二分查找。由于数组已排序,我们可以在任何给定的索引处找到多少个缺失的数字,即arr[index] – (index+1)。利用这个知识,我们可以应用二分查找来缩小寻找那个索引的范围,从而更容易地获取缺失的数字。
下面是上述方法的实现:
输出
时间复杂度: O(log(n)),其中 n 是数组中元素的数量。