leetcode每日一题 398. 随机数索引
class Solution {
private int[] nums;
public Solution(int[] nums) {
this.nums = nums;
}
public int pick(int target) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
if(nums[i] == target){
list.add(i);
}
}
Collections.shuffle(list);
return list.get(0);
}
}

class Solution {
private Map<Integer,List<Integer>> map = new HashMap<>();
public Solution(int[] nums) {
for (int i = 0; i < nums.length; i++) {
if(map.containsKey(nums[i])){
map.get(nums[i]).add(i);
}else {
List<Integer> list = new ArrayList<>();
list.add(i);
map.put(nums[i],list);
}
}
}
public int pick(int target) {
List<Integer> list = map.get(target);
Collections.shuffle(list);
return list.get(0);
}
}

浙公网安备 33010602011771号