Skip to content

Commit 4d14f28

Browse files
Contest/src/_20160910_4th_contest/RandomPickIndex.java
1 parent e6a1a3f commit 4d14f28

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package _20160910_4th_contest;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
import java.util.List;
6+
import java.util.Map;
7+
8+
public class RandomPickIndex {
9+
10+
}
11+
12+
class Solution {
13+
int[] input;
14+
java.util.Random rand = new java.util.Random();
15+
public Solution(int[] nums) {
16+
input = nums;
17+
}
18+
19+
public int pick(int target) {
20+
List<Integer> list = new ArrayList();
21+
for(int i = 0; i < input.length; i++){
22+
if(input[i] == target){
23+
list.add(i);
24+
}
25+
}
26+
if(list.size() == 1) return list.get(0);
27+
int randomIndex = rand.nextInt(list.size());
28+
return list.get(randomIndex);
29+
}
30+
}
31+
32+
33+
class Solution_MLE {
34+
35+
private Map<Integer, List<Integer>> map = new HashMap();
36+
java.util.Random rand = new java.util.Random();
37+
38+
public Solution_MLE(int[] nums) {
39+
for(int i = 0; i < nums.length; i++){
40+
if(map.containsKey(nums[i])){
41+
List<Integer> list = map.get(nums[i]);
42+
list.add(i);
43+
map.put(nums[i], list);
44+
} else {
45+
List<Integer> list = new ArrayList();
46+
list.add(i);
47+
map.put(nums[i], list);
48+
}
49+
}
50+
}
51+
52+
public int pick(int target) {
53+
List<Integer> list = map.get(target);
54+
if(list.size() == 1) return list.get(0);
55+
int randomIndex = rand.nextInt(list.size());
56+
return list.get(randomIndex);
57+
}
58+
}

0 commit comments

Comments
 (0)