习题7-2 求一批整数中出现最多的个位数字 (20 分)
时间: 2023-05-31 09:18:35 浏览: 131
### 回答1:
题目描述:
给定一批整数,求其中出现最多的个位数字。
思路:
1. 定义一个字典,用于记录每个数字出现的次数。
2. 遍历整数列表,将每个数字的个位数取出来,并在字典中对应的值加1。
3. 遍历字典,找到出现次数最多的数字。
4. 返回出现次数最多的数字。
代码实现:
```python
def max_digit(nums):
count = {}
for num in nums:
digit = num % 10
if digit in count:
count[digit] += 1
else:
count[digit] = 1
max_count =
max_digit =
for digit, cnt in count.items():
if cnt > max_count:
max_count = cnt
max_digit = digit
return max_digit
```
测试样例:
```python
assert max_digit([123, 456, 789, 111, 222, 333]) == 1
assert max_digit([123, 456, 789, 111, 222, 333, 444]) == 4
assert max_digit([123, 456, 789, 111, 222, 333, 444, 555, 666, 777, 888, 999]) == 1
```
### 回答2:
这道题需要我们首先读入一批整数,然后统计它们中出现最多的个位数字。我们可以使用桶排序的思想,在一个长度为10的数组中记录每个数字出现的次数,最后找到出现次数最多的数字。具体步骤如下:
首先,定义一个长度为10的数组count,记录每个数字出现的次数,初始化为0。
然后,读入第一个整数num,取出它的个位数,将count数组对应的位置加1。
接着,逐个读入整数,取出它们的个位数,并在count数组对应的位置上加1。
最后,遍历count数组,找到出现次数最多的数字,输出其索引值。
下面是一个示例代码:
```python
n = int(input()) # 输入整数个数
nums = list(map(int, input().split())) # 输入整数列表
count = [0] * 10 # 初始化计数数组
for num in nums:
digit = num % 10 # 取出个位数
count[digit] += 1 # 在计数数组上加1
max_count = max(count) # 找到最大的计数
for i in range(10):
if count[i] == max_count: # 找到出现次数最多的数字
print(i)
break
```
以上就是本题的解题思路和示例代码。需要注意的是,输入的整数可能很大,可以使用Python内置的bigint类型来处理。
### 回答3:
题目要求我们在一批整数中找到出现最多的个位数字。这是一道比较典型的统计题目。
我们可以采用桶排序的思想。创建一个长为10的桶,分别表示数字0~9在输入数据中出现的次数。遍历输入数据,对于每个数,将其个位数上的数字在桶中对应的位置加1。最后遍历桶,找到出现次数最多的数字即可。
另外,我们还可以使用哈希表进行统计。创建一个包含0~9数字及其出现次数的哈希表,遍历输入数据,对于每个数,将其个位数字在哈希表中对应的出现次数加1。最后遍历哈希表,找到出现次数最多的数字即可。
无论使用哪种方法,时间复杂度都是O(n),其中n为输入数据的个数。空间复杂度为O(1)或O(10),取决于使用桶排序还是哈希表。
总的来说,本题的解题思路比较直观,只需要对输入数据进行简单的统计即可,适合初学者练习统计算法。