1.题目
https://leetcode-cn.com/problems/random-pick-index/
2.题解
这道题我是在tag下拉的“蓄水池抽样”中找到的。
其思路就是循环之后先判断一下这个数在数组中的索引,然后利用随机数摇一下。就可以了。
当时看到这个名字,感觉挺高大上的,结果这个题竟然如此的简单,交流群中有朋友说,直接输出第一个也能过,我试了一下,过不了,还是得随机一下,就这样。下次我出题,一定搞难一点。敬请期待。
3.代码
class Solution {
private Random ran;
int[] nums;
public Solution(int[] nums) {
this.nums=nums;
ran=new Random();
}
public int pick(int target) {
int result=0;
int number=0;
int length=nums.length;
for (int i = 0; i < length ; i++) {
if(nums[i]==target){
number++;
if(ran.nextInt(number)==0){
result=i;
}
}
}
return result;
}
}
/**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(nums);
* int param_1 = obj.pick(target);
*/