zoukankan      html  css  js  c++  java
  • 398 Random Pick Index 随机数索引

    给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。
    注意:
    数组大小可能非常大。 使用太多额外空间的解决方案将不会通过测试。
    示例:
    int[] nums = new int[] {1,2,3,3,3};
    Solution solution = new Solution(nums);
    // pick(3) 应该返回索引 2,3 或者 4。每个索引的返回概率应该相等。
    solution.pick(3);
    // pick(1) 应该返回 0。因为只有nums[0]等于1。
    solution.pick(1);
    详见:https://leetcode.com/problems/random-pick-index/description/
    C++:

    class Solution {
    public:
        Solution(vector<int> nums): v(nums) {}
        
        int pick(int target) 
        {
            int cnt = 0, res = -1;
            for (int i = 0; i < v.size(); ++i) 
            {
                if (v[i] != target)
                {
                    continue;
                }
                ++cnt;
                if (rand() % cnt == 0)
                {
                    res = i;
                }
            }
            return res;
        }
    private:
        vector<int> v;
    };
    
    /**
     * Your Solution object will be instantiated and called as such:
     * Solution obj = new Solution(nums);
     * int param_1 = obj.pick(target);
     */
    

     参考:https://www.cnblogs.com/grandyang/p/5875509.html

  • 相关阅读:
    多态与鸭子类型
    mixin与派生
    4.9作业
    property
    继承
    封装
    《梦断代码》阅读笔记1
    阅读笔记3——《大道至简》第四、五、六章
    阅读笔记2——《大道至简》第二、三章
    阅读笔记1——《大道至简》第一章
  • 原文地址:https://www.cnblogs.com/xidian2014/p/8854462.html
Copyright © 2011-2022 走看看