package problems.medium; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by sherxon on 1/16/17. */ public class RandomPickIndex { Map<Integer, List<Integer>> map = new HashMap<>(); public RandomPickIndex(int[] nums) { for (int i = 0; i < nums.length; i++) { if (!map.containsKey(nums[i])) map.put(nums[i], new ArrayList<>()); map.get(nums[i]).add(i); } } public static void main(String[] args) { int[] nums = new int[]{1, 2, 3, 3, 3}; RandomPickIndex randomPickIndex = new RandomPickIndex(nums); for (int i = 0; i < 10; i++) { System.out.println(randomPickIndex.pick(3)); } } public int pick(int target) { int random = (int) (Math.random() * map.get(target).size()); return map.get(target).get(random); } }