题目链接: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);
*/