【问题描述】 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 【输入形式】 输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。 【输出形式】 输出一个整数,表示值正好相差1的数对的个数。小数在前,大数在后,如有多组输出顺序按照第一个数字递增排序,重复数字只显示一组。 【样例输入】 6 10 2 6 3 7 8 【样例输出】 3 2 3 6 7 7 8 【样例说明】 值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。 【样例输入】 3 1 3 5 【样例输出】 0
时间: 2023-05-21 17:02:42 浏览: 330
这是一个典型的计数问题,可以使用哈希表来解决。遍历一遍数组,将每个数存入哈希表中,然后再遍历一遍数组,对于每个数,检查它的前一个数和后一个数是否在哈希表中,如果存在,则说明它们的值正好相差1,计数器加1。
以下是代码实现:
```python
n = int(input())
nums = list(map(int, input().split()))
hash_map = {}
for num in nums:
hash_map[num] = True
count = 0
for num in nums:
if num-1 in hash_map:
count += 1
print(num-1, num)
elif num+1 in hash_map:
count += 1
print(num, num+1)
print(count)
```
对于样例输入1,输出为:
```
2 3
6 7
7 8
3
```
对于样例输入2,输出为:
```
0
```
相关问题
【问题描述】 给定n个的整数,问这些数中有多少对整数,它们的值正好相差1。 【输入形式】 输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。
【样例输入】
5
1 5 2 4 3
【样例输出】
4
【样例说明】
1和2,2和3,3和4,4和5这四对数的值正好相差1。
【解题思路】
可以先将输入的n个整数排序,然后从第一个整数开始遍历,对于每个整数,查找其后面的每个整数,如果这两个整数的差值为1,则将计数器加1。遍历完所有整数后,计数器中的值即为所求。
【参考代码】
问题描述】 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。 【输入形式】 输入的第一行包含一个整数n,表示给定整数的个数。 第二行包含所给定的n个整数。 【输出形式】 输出一个整数,表示值正好相差1的数对的个数。 【样例输入】 6 10 2 6 3 7 8 【样例输出】 3 C++实现
以下是基于题意的 C++ 实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n;
cin >> n;
int a[n];
for (int i = 0; i < n; i++) {
cin >> a[i];
}
sort(a, a + n); // 排序
int ans = 0;
for (int i = 0; i < n - 1; i++) {
if (a[i + 1] - a[i] == 1) {
ans++;
}
}
cout << ans << endl;
return 0;
}
```
对于给定的 n 个整数,先将其排序,然后遍历数组,如果相邻的两个数的差为 1,就将答案加 1。最后输出答案即可。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)