文章目录

  • 1. 题目
  • 2. 解题
    • 2.1 一次遍历
    • 2.2 二分查找

1. 题目

给出一个有序数组 A,数组中的每个数字都是 独一无二的,找出从数组最左边开始的第 K 个缺失数字。

示例 1:
输入:A = [4,7,9,10], K = 1
输出:5
解释:
第一个缺失数字为 5 。示例 2:
输入:A = [4,7,9,10], K = 3
输出:8
解释:
缺失数字有 [5,6,8,...],因此第三个缺失数字为 8 。示例 3:
输入:A = [1,2,4], K = 3
输出:6
解释:
缺失数字有 [3,5,6,7,...],因此第三个缺失数字为 6 。提示:
1 <= A.length <= 50000
1 <= A[i] <= 1e7
1 <= K <= 1e8

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/missing-element-in-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 一次遍历

  • 相邻的数做差,进行判断,对 k 进行更新,直到 k <= 0 停止
class Solution {public:int missingElement(vector<int>& nums, int k) {int i = 0, n = nums.size(), ans;for(i = 0; i < n-1; ++i){if(nums[i+1]-nums[i]-1 < k)k -= nums[i+1]-nums[i]-1;else{ans = nums[i]+k;return ans;}}return nums[n-1]+k;}
};

124 ms 29.6 MB

2.2 二分查找

class Solution {public:int missingElement(vector<int>& nums, int k) {int l = 0, r = nums.size()-1, mid, miss;while(l <= r){mid = l+((r-l)>>1);miss = countmissing(nums, mid);if(miss < k)l = mid+1;else if(miss > k)r = mid-1;elsereturn nums[mid]-1;}return nums[r]+k-countmissing(nums,r);}int countmissing(vector<int>& nums, int i){return nums[i]-nums[0]-i;}
};

144 ms 29.6 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1060. 有序数组中的缺失元素(二分查找)相关推荐

  1. LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42

    540. 有序数组中的单一元素 540. Single Element in a Sorted Array 题目描述 每日一算法2019/6/14Day 42LeetCode540. Single E ...

  2. LeetCode 540. 有序数组中的单一元素(c语言实现)

    540. 有序数组中的单一元素 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解决方案必须满足 O(log n) 时间 ...

  3. LeetCode 540. 有序数组中的单一元素(位运算二分查找)

    1. 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3 ...

  4. LeetCode 540 有序数组中的单一元素

    题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这 个数. 题解 二分查找 代码 class Solution { public:int singleNonD ...

  5. LeetCode 540.有序数组中的单一元素

    目录 题目 示例 C语言代码 逐个异或 正常遍历 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 输入: nums = [1,1,2,3,3,4, ...

  6. 「 每日一练,快乐水题 」540. 有序数组中的单一元素

    ✅力扣原题: 力扣链接:540. 有序数组中的单一元素 ✅题目简述: 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解 ...

  7. 540. 有序数组中的单一元素 golang

    540. 有序数组中的单一元素 golang func singleNonDuplicate(nums []int) int {if len(nums) <= 1 {return nums[0] ...

  8. 力扣 26.删除有序数组中的重复元素

    文章目录 题目 思路 AC代码 收获 题目 删除有序数组中的重复元素 思路 快慢指针.快指针不断向前走.判断快指针所指的数与快指针前面的数是否相等,如果相等就说明是重复的,要继续向后移动,如果不相等, ...

  9. 540. 有序数组中的单一元素

    540. 有序数组中的单一元素 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 ...

最新文章

  1. 【小知识】C、C++ 中const的实现机制
  2. 一些VR延迟优化方法
  3. 科大星云诗社动态20201216
  4. mac下iterm配色、半透明与样式设置
  5. redis的分布式解决方式--codis
  6. HH SaaS电商系统的商品营销角标功能模块设计
  7. 20160821_第三周周报
  8. python根据ip获取地理位置_使用python根据ip获取目标地理位置信息
  9. 开发过程中解决各种跨域问题
  10. React:Hook
  11. sendkeys安装包_利用Windows命令行解压zip压缩文件(不借助第三方软件)
  12. R语言和Rstudio的介绍和安装
  13. Arduino ESP8266利用SPIFFS上传文件和查看文件
  14. 最近在论证一个问题,到底是先有鸡还是先有蛋:
  15. Django个人博客搭建4-配置使用 Bootstrap 4 改写模板文件
  16. html文件设置成mac桌面,Mac软件教程:让你的Mac桌面放入无限多的文件
  17. 软件测试前景怎么样?大概要学什么?
  18. 为什么不要去小公司上班?这是我血与泪的教训!!!
  19. C++之operator关键字作用(一百一三十)
  20. linux安装python3

热门文章

  1. Storm任务提交过程及目录树介绍
  2. html 替换反斜杠,在URL直接替换反斜杠反斜杠
  3. RabbitMQ的消息确认机制
  4. shell 替换字符串的几种方法,变量替换${},sed,awk
  5. hive三种调用方式
  6. pug模板引擎——jade
  7. 高程(三)笔记---- 第三章
  8. 常见的getchar 与EOF的问题
  9. 娜塔莉波特曼2015哈佛毕业演讲
  10. stl algorithm -- sort ,unique