-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy path0398-random-pick-index.js
35 lines (33 loc) · 1.01 KB
/
0398-random-pick-index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
* 398. Random Pick Index
* https://leetcode.com/problems/random-pick-index/
* Difficulty: Medium
*
* Given an integer array nums with possible duplicates, randomly output the index of a given
* target number. You can assume that the given target number must exist in the array.
*
* Implement the Solution class:
* - Solution(int[] nums) Initializes the object with the array nums.
* - int pick(int target) Picks a random index i from nums where nums[i] == target. If there
* are multiple valid i's, then each index should have an equal probability of returning.
*/
/**
* @param {number[]} nums
*/
var Solution = function(nums) {
this.map = new Map();
for (let i = 0; i < nums.length; i++) {
if (!this.map.has(nums[i])) {
this.map.set(nums[i], []);
}
this.map.get(nums[i]).push(i);
}
};
/**
* @param {number} target
* @return {number}
*/
Solution.prototype.pick = function(target) {
const result = this.map.get(target);
return result[Math.floor(Math.random() * result.length)];
};