2 条题解
-
0
来个比较正常的解法。思路是这样的,首先输入起码有两个数,那么检查的初始范围就是两个数,比较这两个数的大小,然后去看后面的数,逐步扩大检查范围,拿后面进来的数跟前面已检查的数对比一下:
- 假如这个数比最小值小,那么在检查范围内的最小值就是它,然后次小值就是原来的最小值。
- 假如这个数比最小值大,但比检查范围内的次小值大,那么次小值就是它。
直到检查范围扩大到全部的数,那么在全部的数里次小值就知道了。代码实现如下:
#include <stdio.h> int main(void) { int a[105] = {0}; int n; scanf("%d", &n); for (int i = 0; i < n; i ++) { scanf("%d", &a[i]); } int min = a[0]; int minor = a[1]; if (min > minor) { min = a[1]; minor = a[0]; } for (int i = 0; i < n; i ++) { if (min > a[i]) { minor = min; min = a[i]; } if (minor > a[i] && a[i] > min) { minor = a[i]; } } printf("%d", minor); return 0; }
信息
- ID
- 19
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 324
- 已通过
- 157
- 上传者