LeetCode 398. 随机数索引

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);
 */

4.结果截图

LeetCode 398. 随机数索引_第1张图片
result.png

你可能感兴趣的:(LeetCode 398. 随机数索引)