|
6 | 6 |
|
7 | 7 | <!-- 这里写题目描述 -->
|
8 | 8 |
|
9 |
| -<p>中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。</p> |
| 9 | +<p><strong>中位数</strong>是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。</p> |
10 | 10 |
|
11 |
| -<p>例如,</p> |
12 |
| - |
13 |
| -<p>[2,3,4] 的中位数是 3</p> |
14 |
| - |
15 |
| -<p>[2,3] 的中位数是 (2 + 3) / 2 = 2.5</p> |
| 11 | +<ul> |
| 12 | + <li>例如 <code>arr = [2,3,4]</code> 的中位数是 <code>3</code> 。</li> |
| 13 | + <li>例如 <code>arr = [2,3]</code> 的中位数是 <code>(2 + 3) / 2 = 2.5</code> 。</li> |
| 14 | +</ul> |
16 | 15 |
|
17 |
| -<p>设计一个支持以下两种操作的数据结构:</p> |
| 16 | +<p>实现 MedianFinder 类:</p> |
18 | 17 |
|
19 | 18 | <ul>
|
20 |
| - <li>void addNum(int num) - 从数据流中添加一个整数到数据结构中。</li> |
21 |
| - <li>double findMedian() - 返回目前所有元素的中位数。</li> |
| 19 | + <li> |
| 20 | + <p><code>MedianFinder() </code>初始化 <code>MedianFinder</code> 对象。</p> |
| 21 | + </li> |
| 22 | + <li> |
| 23 | + <p><code>void addNum(int num)</code> 将数据流中的整数 <code>num</code> 添加到数据结构中。</p> |
| 24 | + </li> |
| 25 | + <li> |
| 26 | + <p><code>double findMedian()</code> 返回到目前为止所有元素的中位数。与实际答案相差 <code>10<sup>-5</sup></code> 以内的答案将被接受。</p> |
| 27 | + </li> |
22 | 28 | </ul>
|
23 | 29 |
|
24 |
| -<p><strong>示例:</strong></p> |
| 30 | +<p><strong>示例 1:</strong></p> |
25 | 31 |
|
26 |
| -<pre>addNum(1) |
27 |
| -addNum(2) |
28 |
| -findMedian() -> 1.5 |
29 |
| -addNum(3) |
30 |
| -findMedian() -> 2</pre> |
| 32 | +<pre> |
| 33 | +<strong>输入</strong> |
| 34 | +["MedianFinder", "addNum", "addNum", "findMedian", "addNum", "findMedian"] |
| 35 | +[[], [1], [2], [], [3], []] |
| 36 | +<strong>输出</strong> |
| 37 | +[null, null, null, 1.5, null, 2.0] |
31 | 38 |
|
32 |
| -<p><strong>进阶:</strong></p> |
| 39 | +<strong>解释</strong> |
| 40 | +MedianFinder medianFinder = new MedianFinder(); |
| 41 | +medianFinder.addNum(1); // arr = [1] |
| 42 | +medianFinder.addNum(2); // arr = [1, 2] |
| 43 | +medianFinder.findMedian(); // 返回 1.5 ((1 + 2) / 2) |
| 44 | +medianFinder.addNum(3); // arr[1, 2, 3] |
| 45 | +medianFinder.findMedian(); // return 2.0</pre> |
33 | 46 |
|
34 |
| -<ol> |
35 |
| - <li>如果数据流中所有整数都在 0 到 100 范围内,你将如何优化你的算法?</li> |
36 |
| - <li>如果数据流中 99% 的整数都在 0 到 100 范围内,你将如何优化你的算法?</li> |
37 |
| -</ol> |
| 47 | +<p><strong>提示:</strong></p> |
| 48 | + |
| 49 | +<ul> |
| 50 | + <li><code>-10<sup>5</sup> <= num <= 10<sup>5</sup></code></li> |
| 51 | + <li>在调用 <code>findMedian</code> 之前,数据结构中至少有一个元素</li> |
| 52 | + <li>最多 <code>5 * 10<sup>4</sup></code> 次调用 <code>addNum</code> 和 <code>findMedian</code></li> |
| 53 | +</ul> |
38 | 54 |
|
39 | 55 | ## 解法
|
40 | 56 |
|
|
0 commit comments