py给定一个n个整型元素的列表a,其中有一个元素出现次数超过n / 2,求这个元素
时间: 2024-02-06 20:01:15 浏览: 34
对于给定的n个整型元素的列表a,如果其中有一个元素出现次数超过n / 2,那么我们可以通过遍历列表来统计每个元素出现的次数,然后找出出现次数超过n / 2的元素即可。
具体的做法是我们可以使用一个字典来记录每个元素出现的次数,遍历列表a,若元素已经在字典中,则将对应的计数加1,否则在字典中添加新的键值对。然后再遍历字典,找出出现次数超过n / 2的元素即可返回。
接下来是具体的代码实现:
```python
def find_majority_element(nums):
count_dict = {}
for num in nums:
if num in count_dict:
count_dict[num] += 1
else:
count_dict[num] = 1
for key, value in count_dict.items():
if value > len(nums) / 2:
return key
# 测试
nums = [1, 2, 2, 2, 3, 2, 2]
result = find_majority_element(nums)
print(result) # 输出2
```
在这个例子中,列表nums中元素2出现了超过n / 2次,所以find_majority_element函数返回2。
因此,我们可以通过遍历统计每个元素出现的次数,然后找出出现次数超过n / 2的元素来解决这个问题。
相关问题
py输入一个带有字母 a 的字符串,输出其中字母 a 的出现次数。
可以使用 Python 的 count() 方法来计算字符串中字母 a 的出现次数,代码如下:
```
s = input("请输入一个字符串:")
count = s.count('a')
print("字母 a 出现的次数为:", count)
```
如果输入的字符串中没有字母 a,则输出的次数为 0。
py给定一个合数n(n≤2^31-1),求出它的所有质因子。
可以使用试除法,从2开始依次除n,若n能被i整除,则i是n的一个质因子,将其存入一个数组中,然后将n除以i,继续判断。如果i不能整除n,则i加1,继续判断。直到i大于n的平方根为止。最后如果n大于1,则将n作为一个质因子加入数组中。
代码如下:
```python
import math
def factorize(n):
factors = []
i = 2
while i <= math.sqrt(n):
if n % i == 0:
factors.append(i)
n //= i
else:
i += 1
if n > 1:
factors.append(n)
return factors
n = int(input())
factors = factorize(n)
print(factors)
```
示例输入1:
```
24
```
示例输出1:
```
[2, 2, 2, 3]
```
示例输入2:
```
123456789
```
示例输出2:
```
[3, 3, 3607, 3803]
```