首页 > 其他 > 详细

LC 1539. Kth Missing Positive Number (二分)

时间:2020-08-09 21:31:12      阅读:135      评论:0      收藏:0      [点我收藏+]

link
技术分享图片
随着i增加,缺失的个数非减,在i处缺失的个数为arr[i]-(i+1).二分找到第一个缺失个数大于等于k的位置left, 则left-1处缺失的个数<k。left-1处缺失的个数为arr[left-1]-left, 还差k-arr[left-1]+left个,则答案是k+left.

class Solution {
public:
    int findKthPositive(vector<int>& arr, int k) {
        int n=arr.size();
        int left=0;
        int right=n-1;
        while(left<=right){
            int mid=(left+right)/2;
            if(arr[mid]-(mid+1)>=k) right=mid-1;
            else left=mid+1;
        }
        
        return left+k;
            
    }
};

LC 1539. Kth Missing Positive Number (二分)

原文:https://www.cnblogs.com/FEIIEF/p/13466303.html

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