程式語言 - LeetCode - C++ - 398. Random Pick Index



題目:


解答:

class Solution {
private:
    unordered_map<int, vector<int>> mp;

public:
    Solution(vector<int>& nums) {
        for (int i = 0; i < nums.size(); ++i) {
            mp[nums[i]].push_back(i);
        }
    }
    
    int pick(int target) {
        vector<int> &v = mp[target];
        int idx = rand() % v.size();
        return v[idx];
    }
};

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