CCF201712-1 最小差值(100分)python两种方法实现

最小差值

问题描述

问题描述 
  给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值。 
输入格式 
  输入第一行包含一个整数n。 
  第二行包含n个正整数,相邻整数之间使用一个空格分隔。 
输出格式 
  输出一个整数,表示答案。 
样例输入 

1 5 4 8 20 
样例输出 

样例说明 
  相差最小的两个数是5和4,它们之间的差值是1。 
样例输入 

9 3 6 1 3 
样例输出 

样例说明 
  有两个相同的数3,它们之间的差值是0. 
数据规模和约定 
  对于所有评测用例,2 ≤ n ≤ 1000,每个给定的整数都是不超过10000的正整数

代码实现

方法一:(暴力法)

num_str = input()
in_str = input()
min = 10000

num = []

for i in in_str.split():
    num.append(int(i))

if int(num_str) <= 1000 and int(num_str) >= 2 and len(num) <= 1000 and len(num) >= 2:

    for i in range(len(num)):
        for j in range(i+1,len(num)):
            sub = abs(num[i]-num[j])
            if min > sub:
                min = sub
    print(min)
else:
    print()

方法二:(排序法)

num_str = input()
in_str = input()

num = []

for i in in_str.split():
    num.append(int(i))
num.sort()
if int(num_str) <= 1000 and int(num_str) >= 2 and len(num) <= 1000 and len(num) >= 2:
    sub = []
    for i in range(len(num) - 1):
        sub.append(abs(num[i]-num[i+1]))
    print(min(sub))
else:
    print()

都是100分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值