列表

详情


NC208616. 最小值

描述

给你n个数,你必须删掉其中任意一个数。问怎样删除可以使得剩下的数中,最大的数减去最小的数的值最小。

输入描述

第一行包含一个整数n(1<=n<=100000)
第二行包含n整数,ai (1<=i<=n && 1<=ai<=1e8)

输出描述

输出这个最小值

示例1

输入:

5                                                                                                                                                                                      
6 3 1 2 2

输出:

2

说明:

删除6,最大的数是3,最小的数是1,那么最大数减去最小数的值就是2

示例2

输入:

2
1 1000

输出:

0

说明:

删掉1或者1000其中的一个,得到最小值0

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 376K, 提交时间: 2020-09-15 19:58:04

#include<bits/stdc++.h>
using namespace std;
int a[100010];
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1);
	cout<<min(a[n]-a[2],a[n-1]-a[1])<<endl;
	return 0;
}

Python3 解法, 执行用时: 40ms, 内存消耗: 4676K, 提交时间: 2021-12-15 19:10:06

n=int(input())
a=list(map(int,input().split()))
a=sorted(a)
print(min(a[n-1]-a[1],a[n-2]-a[0]))

上一题