首页 > 编程语言 > 详细

2019 力扣杯-全国高校春季编程大赛 有序数组中的缺失元素

时间:2019-04-21 20:39:58      阅读:196      评论:0      收藏:0      [点我收藏+]

给出一个有序数组 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. 1 <= A.length <= 50000
  2. 1 <= A[i] <= 1e7
  3. 1 <= K <= 1e8

没啥好说的。注意超过数组最大值的就不要去遍历了。直接算!

这题的正解应该也是直接算的。。

class Solution {
public:
    int missingElement(vector<int>& nums, int k) {
        int mx = 0;
        int mi = nums[0];
        set<int> Se;
        for (int num : nums) {
            Se.insert(num);
            mx = max(mx, num);
        }
        int pos = 0;
        int num = 0;
        int cnt = mx - mi + 1 - nums.size();
        if(k<=cnt){
            for (int i = mi; i <= mx; ++i) {
                if (!Se.count(i)){
                    num++;
                    if(num == k){
                        return i;
                    }
                }
            }
        }      
        return mx+k-cnt;
    }
};

 

2019 力扣杯-全国高校春季编程大赛 有序数组中的缺失元素

原文:https://www.cnblogs.com/yinghualuowu/p/10746626.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!