力扣-398题 随机数索引(C++)- 蓄水池抽样

力扣-398题 随机数索引(C++)- 蓄水池抽样,第1张

题目链接:https://leetcode-cn.com/problems/random-pick-index/
题目如下:

class Solution {
public:
    vector<int> vtr;
    Solution(vector<int>& nums) {
        vtr=nums;
    }
    //水塘抽样算法
    //取内容时:遍历数组,第i次遇到值为target的元素时,随机选择区间[0,i)内的一个整数,如果为0,则返回该元素的下标,否则返回值不变
    int pick(int target) {
        int cnt=0;
        int res=0;
        for(int i=0;i<vtr.size();i++){
            if(vtr[i]==target){
                cnt++;
                if(rand()%cnt==0) res=i;
            }
        }

        return res;
    }
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(nums);
 * int param_1 = obj->pick(target);
 */

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/734330.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-27
下一篇2022-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存