问题描述: ![在这里插入图片描述](https://img-blog.csdnimg.cn/a773441767a643c093dcf538c85b1522.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlhbmdnZWdlODg=,size_20,color_FFFFFF,t_70,g_se,x_16) 样例如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/aaa735be49c24691aaae71dcf20d57cc.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlhbmdnZWdlODg=,size_20,color_FFFFFF,t_70,g_se,x_16) 代码如下:利用map解决即可
import java.util.*;
public class Solution {
Map<Integer, List<Integer>> map=new HashMap<>();
public Solution(int[] nums) {
for (int i = 0; i <nums.length ; i++) {
if (map.containsKey(nums[i])){
List<Integer> list=map.get(nums[i]);
list.add(i);
map.put(nums[i],list);
}else {
List<Integer> list=new LinkedList<>();
list.add(i);
map.put(nums[i],list);
}
}
}
public int pick(int target) {
int res=0;
if (map.containsKey(target)) {
List<Integer> list = map.get(target);
if (list.size() == 1) res = list.get(0);
else {
int random = new Random().nextInt(list.size());
res = list.get(random);
}
return res;
}else return -1;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("请输入数组长度");
int n=scanner.nextInt();
int[] nums=new int[n];
System.out.println("请输入数组内容");
for (int i = 0; i <n ; i++) {
nums[i]=scanner.nextInt();
}
Solution solution=new Solution(nums);
while (true) {
System.out.println("请输入要查找的数字");
int target = scanner.nextInt();
System.out.println(solution.pick(target));
}
}
}
运行结果如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/3e7690db85224fb98b72598eb0f06d2d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbGlhbmdnZWdlODg=,size_20,color_FFFFFF,t_70,g_se,x_16)
|