380. Insert Delete GetRandom O(1)

#### QUESTION:

Design a data structure that supports all following operations in average O(1) time.

1. insert(val): Inserts an item val to the set if not already present.
2. remove(val): Removes an item val from the set if present.
3. getRandom: Returns a random element from current set of elements. Each element must have the same probability of being returned. Example: ``` // Init an empty set. RandomizedSet randomSet = new RandomizedSet();

// Inserts 1 to the set. Returns true as 1 was inserted successfully. randomSet.insert(1);

// Returns false as 2 does not exist in the set. randomSet.remove(2);

// Inserts 2 to the set, returns true. Set now contains [1,2]. randomSet.insert(2);

// getRandom should return either 1 or 2 randomly. randomSet.getRandom();

// Removes 1 from the set, returns true. Set now contains [2]. randomSet.remove(1);

// 2 was already in the set, so return false. randomSet.insert(2);

// Since 2 is the only number in the set, getRandom always return 2. randomSet.getRandom();

``````#### EXPLANATION:

2. 当插入的时候，按照顺序插入，如果已经有了该节点，那么就返回false
3. 删除的时候，也是同样的方式，进行查找，然后删除节点
4. random就是对size进行寻找

#### SOLUTION:
```java
class RandomizedSet {

int size = 0;
Random r;

/** Initialize your data structure here. */
public RandomizedSet() {
size = 0;
r = new Random();
}

public void print(){
}
}
/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */
public boolean insert(int val) {
while (tmp.next!=null && tmp.next.val < val){
tmp = tmp.next;
}
if(tmp.next!= null && tmp.next.val == val) return false;
ListNode node = new ListNode(val);
node.next = tmp.next;
tmp.next = node;
size++;
return true;
}

/** Removes a value from the set. Returns true if the set contained the specified element. */
public boolean remove(int val) {
ListNode pre = tmp;
while (tmp!=null){
if(tmp.val == val) break;
pre = tmp;
tmp = tmp.next;
}
if(tmp == null || tmp.val!=val) return false;
pre.next = tmp.next;
size--;
return true;
}

/** Get a random element from the set. */
public int getRandom() {
int random = r.nextInt(size);
int idx = 0;