题目描述
给定一个可能含有重复元素的整数数组,要求随机输出给定的数字的索引。 您可以假设给定的数字一定存在于数组中。
样例描述

思路
哈希表 + 随机函数
用哈希表存储值和对应所有下标的映射,然后随机索引出一个下标
代码
class Solution {
//值和所有下标之间的映射
Map<Integer, List<Integer>> map;
Random random;
public Solution(int[] nums) {
map = new HashMap<>();
random = new Random();
//初始化映射
for (int i = 0; i < nums.length; i ++ ) {
List<Integer> idx = map.getOrDefault(nums[i], new ArrayList<>());
idx.add(i);
map.put(nums[i], idx);
}
}
public int pick(int target) {
//随机返回一个下标
List<Integer> idx = map.get(target);
return idx.get(random.nextInt(idx.size()));
}
}
/**
* Your Solution object will be instantiated and called as such:
* Solution obj = new Solution(nums);
* int param_1 = obj.pick(target);
*/
本文介绍了一种使用哈希表和随机函数实现从含重复元素的数组中随机选择指定数值索引的方法。通过构建哈希表存储数值及其所有索引,再利用随机函数从中选取一个索引。
425

被折叠的 条评论
为什么被折叠?



