type Solution struct { index map[int][]int } func Constructor(nums []int) Solution { sol := Solution{index: make(map[int][]int)} for i, n := range nums { sol.index[n] = append(sol.index[n], i) } return sol } func (this *Solution) Pick(target int) int { arr := this.index[target] return arr[rand.Intn(len(arr))] } /** * Your Solution object will be instantiated and called as such: * obj := Constructor(nums); * param_1 := obj.Pick(target); */