Golang simple RedBlackTree solution
go\ntype NumberContainers struct {\n\tContainer map[int]int\n\tReIndexes map[int]*treemap.Map\n}\n\nfunc Constructor() NumberContainers {\n\treturn NumberContai
```go\ntype NumberContainers struct {\n\tContainer map[int]int\n\tReIndexes map[int]*treemap.Map\n}\n\nfunc Constructor() NumberContainers {\n\treturn NumberContainers{\n\t\tContainer: make(map[int]int),\n\t\tReIndexes: make(map[int]*treemap.Map),\n\t}\n}\n\nfunc (nc *NumberContainers) Change(index int, newNumber int) {\n\t// remove ReIndex if oldNumber exists\n\tif oldNumber, exist := nc.Container[index]; exist {\n\t\tnc.ReIndexes[oldNumber].Remove(index)\n\t}\n\t// initial ReIndex if not exists\n\tif nc.ReIndexes[newNumber] == nil {\n\t\tnc.ReIndexes[newNumber] = treemap.NewWithIntComparator()\n\t}\n\t// store into container and reindex\n\tnc.Container[index] = newNumber\n\tnc.ReIndexes[newNumber].Put(index, struct{}{})\n}\n\nfunc (nc *NumberContainers) Find(number int) int {\n\tif nc.ReIndexes[number] == nil || nc.ReIndexes[number].Empty() {\n\t\treturn -1\n\t}\n\tk, _ := nc.ReIndexes[number].Min()\n\treturn k.(int)\n}\n```
['Go']