The **MedianFinder** class supports finding the median of a stream of numbers.
Implement the following:
- `MedianFinder()` initializes the object.
- `void addNum(int num)` adds the integer `num` from the data stream to the data structure.
- `double findMedian()` returns the median of all elements so far.
**Example:**
```
Input: ["MedianFinder","addNum","addNum","findMedian","addNum","findMedian"]
[[],[1],[2],[],[3],[]]
Output: [null,null,null,1.5,null,2.0]
```
If the size of the list is even, there is no middle value, and the median is the mean of the two middle values.