| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- var empty struct{} = struct{}{}
 
- type RandomizedSet struct {
 
- 	set map[int]struct{}
 
- 	key []int
 
- }
 
- /** Initialize your data structure here. */
 
- func Constructor() RandomizedSet {
 
- 	return RandomizedSet{
 
- 		set: make(map[int]struct{}),
 
- 	}
 
- }
 
- /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */
 
- func (this *RandomizedSet) Insert(val int) bool {
 
- 	if _, ok := this.set[val]; ok {
 
- 		return false
 
- 	}
 
- 	this.set[val] = empty
 
- 	this.key = append(this.key, val)
 
- 	return true
 
- }
 
- /** Removes a value from the set. Returns true if the set contained the specified element. */
 
- func (this *RandomizedSet) Remove(val int) bool {
 
- 	if _, ok := this.set[val]; ok {
 
- 		delete(this.set, val)
 
- 		if n := len(this.set); 2*n < len(this.key) {
 
- 			this.key = make([]int, n)
 
- 			i := 0
 
- 			for k := range this.set {
 
- 				this.key[i] = k
 
- 				i++
 
- 			}
 
- 		}
 
- 		return true
 
- 	}
 
- 	return false
 
- }
 
- /** Get a random element from the set. */
 
- func (this *RandomizedSet) GetRandom() int {
 
- 	for {
 
- 		val := this.key[rand.Intn(len(this.key))]
 
- 		if _, ok := this.set[val]; ok {
 
- 			return val
 
- 		}
 
- 	}
 
- }
 
- /**
 
-  * Your RandomizedSet object will be instantiated and called as such:
 
-  * obj := Constructor();
 
-  * param_1 := obj.Insert(val);
 
-  * param_2 := obj.Remove(val);
 
-  * param_3 := obj.GetRandom();
 
-  */
 
 
  |