📅  最后修改于: 2023-12-03 15:23:03.601000             🧑  作者: Mango
给定一个整数数组,编写一个程序,找到两个数的差最小,这两个数在原数组中的顺序必须是升序。即需要找到a和b,满足 a-b 的值最小,且a必须在b的前面。
对于每个测试用例,输出两个整数,分别表示差值最小的两个数字,并按升序排列。如果有多组答案,则返回字典序最小的一对。
输入示例1:
2
5
2 4 5 7 9
5
9 7 5 3 1
输出示例1:
4 5
7 9
本题需要找到两个元素的差值最小,可以先将数组进行排序(升序),然后使用一次遍历,找到相邻元素之间差值的最小值。需要注意,如果有多组答案,则需要返回字典序最小的一对。
"""
Author: 朱绍民
Date: 2021/4/23
"""
from typing import List
def find_min_diff(arr: List[int]) -> List[int]:
# 将数组排序
arr.sort()
diff_min = arr[-1] - arr[0]
res = [arr[0], arr[-1]]
for i in range(len(arr) - 1):
diff = arr[i + 1] - arr[i]
# 找到更小的差值
if diff <= diff_min:
diff_min = diff
res = [arr[i], arr[i + 1]]
return res
if __name__ == '__main__':
test_cases = int(input())
for i in range(test_cases):
n = int(input())
arr = list(map(int, input().split()))
res = find_min_diff(arr)
print(res[0], res[1])
代码解释请看如下markdown:
请看如下代码: