题目3:最小差值 问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔。 输出格式 输出一个整数,表示答案。 样例输入 5 1 5 4 8 20 样例输出 1 样例说明 相差最小的两个数是5和4,它们之间的差值是1。 样例输入 5 9 3 6 1 3 样例输出 0 样例说明 有两个相同的数3,它们之间的差值是0. 数据规模和约定 对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。
时间: 2023-04-29 14:06:00 浏览: 305
本题要求找到n个整数中相差最小的两个数(差的绝对值最小),并输出它们的差值的绝对值。
输入格式:第一行包含一个整数n。
第二行包含n个用空格隔开的整数。
输出格式:输出一个整数,表示相差最小的两个数的差值的绝对值。
样例输入:5 1 5 4 8 20
样例输出:1
样例输入:5 9 3 6 1 3
样例输出:0
数据规模和约定:对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。
相关问题
题目3:最小差值\n问题描述\n 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。\n输入格式\n 输入第一行包含一个整数n。\n 第二行包含n个正整数,相邻整数之间使用一个
空格分隔。\n输出格式\n 输出一个整数,表示相差最小的两个数的差值的绝对值。\n样例输入\n5\n1 5 4 8 20\n样例输出\n1\n样例说明\n 相差最小的两个数是5和4,它们之间的差值是1。\n数据规模与约定\n 对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数。
CSP题目100分答案 问题描述:给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 输入格式: 输入第一行包含一个整数n。 第二行包含n个正整数,相邻整数之间使用一个空格分隔
这是一个经典的CSP(Competitive Programming)问题,通常被称为“寻找最接近对”或“绝对差最小的数”。你可以通过以下步骤找到100分的答案:
1. **遍历数组**:首先,我们可以创建一个哈希表(如Python中的字典或C++中的unordered_map),用于存储每个数及其索引。
2. **初始化**:遍历数组,将第一个数的差值设为当前最大数减去它本身,然后将这个差值及对应的最大值存入哈希表中。
3. **比较更新**:对于后续的每个数,计算它与已知最大值之间的差值(即abs(arr[i] - max_val))。如果这个差值小于当前记录的最小差值,就更新最小差值和对应的数。
4. **返回结果**:遍历结束后,哈希表中存储的就是所有数对中差值最小的一对,直接输出这个差值即可。
以下是Python的示例代码:
```python
def min_abs_difference(nums):
n = len(nums)
if n < 2:
return None
nums_dict = {nums[0]: 0}
min_diff = abs(nums[1] - nums[0])
for i in range(1, n):
diff = abs(nums[i] - nums_dict.get(nums[i], float('inf')))
if diff < min_diff:
min_diff = diff
nums_dict[nums[i]] = i
return min_diff
```
阅读全文