解题思路:我们看到这个题目,可以很快的转化为作为求排序后数组的两两之间的最小问题,当然也可以不需要排序,当然我这边直接偷懒直接sort,但是你追求效率的话你也可以直接快排,二分排,创建一个比较的大的假定公差d,然后一个for循环求最小值就可以了,不排序的话可以直接abs,当然注意边界情况。
注意事项:奇怪的是你给出的midist数值很迷,给你们看一下分别代入1000,10000,100000,的结果
参考代码:
n = int(input()) midest = 10000 num = list(map(int,input().split())) num.sort() for i in range(len(num) - 1): midest = min(midest,num[i + 1] - num[i]) if midest == 0: print(n) else: ans = (num[-1] - num[0])//midest print(ans + 1)
0.0分
1 人评分
【偶数求和】 (C++代码)浏览:785 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:658 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1844 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:1261 |
2004年秋浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:1368 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:761 |
P1000 (C语言代码)浏览:911 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1968 |
DNA (C语言代码)浏览:440 |
杨辉三角 (C语言代码)浏览:505 |