• LC 1539. Kth Missing Positive Number (二分)


    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;
                
        }
    };
    
  • 相关阅读:
    基本运算符
    格式化输出
    Python与用户的交互
    数据类型
    变量
    正则表达式
    vuex方法
    vue的webpack打包步骤
    浮动问题
    媒体查询技术
  • 原文地址:https://www.cnblogs.com/FEIIEF/p/13466303.html
Copyright © 2020-2023  润新知