# Find Median from Data Stream

Moderate
0/80
Average time to solve is 20m
Contributed by
1 upvote

## Problem statement

The median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value and the median is the mean of the two middle values.

Example:
``````Median for ‘arr’ = [1,2,3,4,5] is 3.
Median for ‘arr’ = [1,2,3,4] is (2+3)/2 = 2.5.
``````

Implement the MedianFinder class:

MedianFinder() initialises the MedianFinder object.

1. Void addNum(int ‘num’) adds the integer ‘num’ from the datastream to the data structure.

2. Double findMedian() returns the median of all elements so far.

Example:
``````Input:
5
1 1
1 2
2
1 5
2

Output:
1.5
2

Explanation:
MedianFinder() initialises the MedianFinder object.
Add 1 to the data structure ‘arr’, so arr = [1].
Add 2 to arr, so arr = [1,2]
Find Median of current arr, that is (1+2)/2 = 1.5.
Add 5 to arr, so arr = [1,2,5]
Find Median of current arr, that is 2.0.
``````
Detailed explanation ( Input/output format, Notes, Images )
Constraints :
``````1  <= T <= 10
-100000 <= nums <= 100000
1 <= N <= 50000
There would be at least 1 element in the data structure before calling findMedian.
Time Limit: 1 sec
``````
##### Sample Input 1 :
``````2
5
1 1
1 2
2
1 5
2
4
1 1
2
1 5
2
``````
##### Sample Output 1 :
``````1.5
2
1
3
``````
##### Explanation Of Sample Input 1 :
``````Test 1:
MedianFinder() initialises the MedianFinder object.
Add 1 to the data structure ‘arr’, so arr = [1].
Add 2 to arr, so arr = [1,2]
Find Median of the current arr, that is (1+2)/2 = 1.5.
Add 5 to arr, so arr = [1,2,5]
Find Median of current arr, that is 2.0

Test 2:
MedianFinder() initialises the MedianFinder object.
Add 1 to the data structure ‘arr’, so arr = [1].
Find Median of current arr, that is 1.0.
Add 5 to arr, so arr = [1,5]
Find Median of current arr, that is (1+5)/2 = 3.0.
``````
##### Sample Input 2 :
``````2
4
1 1
1 5
1 2
2
5
1 1
1 5
2
1 3
2
``````
##### Sample Output 2 :
``````2.0
3
3
``````
Console