【问题描述】 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 【输入形式】 输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。 【输出形式】 输出一个整数,表示值正好相差1的数对的个数。小数在前,大数在后,如有多组输出顺序按照第一个数字递增排序,重复数字只显示一组。
时间: 2024-02-22 15:56:27 浏览: 110
给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
5星 · 资源好评率100%
以下是一个 Python3 的解法:
```python
n = int(input())
nums = list(map(int, input().split()))
nums_set = set(nums) # 先使用 set 去重
result = 0
for num in nums_set:
if num + 1 in nums_set: # 如果 num+1 在集合中,说明存在一对数差为1
result += 1
print(result)
```
思路是先使用 set 对输入的整数列表去重,然后遍历每个数,如果它的后继数(即加1后的数)也在集合中,说明存在一对数差为1,结果加1。最后输出结果即可。
注意,题目要求输出的是数对的个数,而不是数的个数,因此如果有重复数字,只能算作一对。
阅读全文