Skip to content

Commit

Permalink
Update 0169. 多数元素.md
Browse files Browse the repository at this point in the history
  • Loading branch information
itcharge committed Sep 21, 2024
1 parent 735bef2 commit 9da60df
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions Solutions/0169. 多数元素.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@

## 题目大意

**描述**:给定一个大小为 $n$ 的数组 `nums`
**描述**:给定一个大小为 $n$ 的数组 $nums$

**要求**返回其中相同元素个数最多的元素
**要求**返回其中的多数元素

**说明**

- **多数元素**:指在数组中出现次数大于 $\lfloor \frac{n}{2} \rfloor$ 的元素。
- $n == nums.length$。
- $1 \le n \le 5 * 10^4$。
- $1 \le n \le 5 \times 10^4$。
- $-10^9 \le nums[i] \le 10^9$。

**示例**
Expand All @@ -39,8 +40,8 @@

### 思路 1:哈希表

1. 遍历数组 `nums`
2. 对于当前元素 `num`,用哈希表统计每个元素 `num` 出现的次数。
1. 遍历数组 $nums$
2. 对于当前元素 $num$,用哈希表统计每个元素 $num$ 出现的次数。
3. 再遍历一遍哈希表,找出元素个数最多的元素即可。

### 思路 1:代码
Expand Down Expand Up @@ -70,11 +71,11 @@ class Solution:

### 思路 2:分治算法

如果 `num` 是数组 `nums` 的众数,那么我们将 `nums` 分为两部分,则 `num` 至少是其中一部分的众数。
如果 $num$ 是数组 $nums$ 的众数,那么我们将 $nums$ 分为两部分,则 $num$ 至少是其中一部分的众数。

则我们可以用分治法来解决这个问题。具体步骤如下:

1. 将数组 `nums` 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 `1`
1. 将数组 $nums$ 递归地将当前序列平均分成左右两个数组,直到所有子数组长度为 $1$
2. 长度为 $1$ 的子数组众数肯定是数组中唯一的数,将其返回即可。
3. 将两个子数组依次向上两两合并。
1. 如果两个子数组的众数相同,则说明合并后的数组众数为:两个子数组的众数。
Expand Down

0 comments on commit 9da60df

Please sign in to comment.