分治法求众数代码
时间: 2023-07-03 07:26:25 浏览: 108
以下是分治法求众数的Python代码实现:
```python
def majority_element(nums):
if len(nums) == 1:
return nums[0]
mid = len(nums) // 2
left = nums[:mid]
right = nums[mid:]
left_majority = majority_element(left)
right_majority = majority_element(right)
if left_majority == right_majority:
return left_majority
left_count = sum(1 for num in left if num == left_majority)
right_count = sum(1 for num in right if num == right_majority)
return left_majority if left_count > right_count else right_majority
```
其中,`nums`为要求众数的数列,如果长度为1,则直接返回该数列中唯一的数,否则将数列分成两个子序列left和right,分别求解出左子序列和右子序列的众数。如果两个子序列的众数相同,则该数为整个序列的众数。否则,需要统计左右子序列中每个数出现的次数,找到出现次数最多的数作为整个序列的众数。
阅读全文