试题编号: | 201712-1 |
试题名称: | 最小差值 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: |
问题描述
给定
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的正整数。
|
问题分析: 这个问题需要嵌套循环依次求出差值,并比较绝对值,找出最小差值。
代码:
n = int(input())
num = input().split()
#a作为最初的差值,1000是因为n不会超过1000
a=1000
for i in range(n):
for j in range(n):
if i==j:
continue
b= abs(int(num[i]) - int(num[j]))
if a>b:
a=b
print(a)
结果1:
提交编号 | 试题名称 | 编程语言 | 评测结果 | 时间使用 | 空间使用 |
---|---|---|---|---|---|
1808580 | 最小差值 | python | 正确 | 运行超时 | 8.675MB |
运行超时是因为在循环时,有许多重复的运算,需要想办法去重
n = int(input())
num = input().split()
a=1000
for i in range(n):
for j in range(0,i+1):
# 灵感来源:九九乘法表的例子
if i==j:
continue
b= abs(int(num[i]) - int(num[j]))
if a>b:
a=b
print(a)
结果2:
提交编号 | 试题名称 | 编程语言 | 评测结果 | 时间使用 | 空间使用 |
---|---|---|---|---|---|
1808580 | 最小差值 | python | 正确 | 546ms | 8.675MB |