|
9 | 9 |
|
10 | 10 | ## 题目大意
|
11 | 11 |
|
12 | | -**描述**:给定一个大小为 $n$ 的数组 `nums`。 |
| 12 | +**描述**:给定一个大小为 $n$ 的数组 $nums$。 |
13 | 13 |
|
14 | | -**要求**:返回其中相同元素个数最多的元素。 |
| 14 | +**要求**:返回其中的多数元素。 |
15 | 15 |
|
16 | 16 | **说明**:
|
17 | 17 |
|
| 18 | +- **多数元素**:指在数组中出现次数大于 $\lfloor \frac{n}{2} \rfloor$ 的元素。 |
18 | 19 | - $n == nums.length$。
|
19 | | -- 1ドル \le n \le 5 * 10^4$。 |
| 20 | +- 1ドル \le n \le 5 \times 10^4$。 |
20 | 21 | - $-10^9 \le nums[i] \le 10^9$。
|
21 | 22 |
|
22 | 23 | **示例**:
|
|
39 | 40 |
|
40 | 41 | ### 思路 1:哈希表
|
41 | 42 |
|
42 | | -1. 遍历数组 `nums`。 |
43 | | -2. 对于当前元素 `num`,用哈希表统计每个元素 `num` 出现的次数。 |
| 43 | +1. 遍历数组 $nums$。 |
| 44 | +2. 对于当前元素 $num$,用哈希表统计每个元素 $num$ 出现的次数。 |
44 | 45 | 3. 再遍历一遍哈希表,找出元素个数最多的元素即可。
|
45 | 46 |
|
46 | 47 | ### 思路 1:代码
|
@@ -70,11 +71,11 @@ class Solution:
|
70 | 71 |
|
71 | 72 | ### 思路 2:分治算法
|
72 | 73 |
|
73 | | -如果 `num` 是数组 `nums` 的众数,那么我们将 `nums` 分为两部分,则 `num` 至少是其中一部分的众数。 |
| 74 | +如果 $num$ 是数组 $nums$ 的众数,那么我们将 $nums$ 分为两部分,则 $num$ 至少是其中一部分的众数。 |
74 | 75 |
|
75 | 76 | 则我们可以用分治法来解决这个问题。具体步骤如下:
|
76 | 77 |
|
77 | | -1. 将数组 `nums` 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 `1`。 |
| 78 | +1. 将数组 $nums$ 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 1ドル$。 |
78 | 79 | 2. 长度为 1ドル$ 的子数组众数肯定是数组中唯一的数,将其返回即可。
|
79 | 80 | 3. 将两个子数组依次向上两两合并。
|
80 | 81 | 1. 如果两个子数组的众数相同,则说明合并后的数组众数为:两个子数组的众数。
|
|
0 commit comments