leetcode 1539.第k个缺失的正整数

这个题作者就当作是练习C++的STL容器来做的,也就是暴力硬解吧。

思路:按照数据范围,我们再创造一个全集,利用差集的概念来求出来arr所没有的元素,放到结果数组里面,然后再对位置进行筛选。

注意:这里的位置可能会超过数组的数目,所以当超过数组数目的时候,一定就是在1000之外的数了(这是根据数据范围来判断的),所以需要用想知道的位置数减去个数组的数目再加上1000,因为这些数字都是严格递增的。

set_difference函数就是用来求出两个数组中,后者数组在前者数组中没有的元素。

class Solution {
public:
    int findKthPositive(vector& arr, int k) {
        vectors(1000);
        int y=0;
        for(int i=1;i<=1000;i++)
        s[y++]=i;
        vectorres(1000);
        auto it=set_difference(s.begin(),s.end(),arr.begin(),arr.end(),res.begin());
        res.resize(it-res.begin());
        int haha=res[k-1];
        if(res.size()

你可能感兴趣的:(leetcode,算法)