显示超时怎么办
#include
using namespace std;
int arr[1000000];
int main(){
int n; scanf("%d",&n);
for(int i = 1; i <= n; i++) scanf("%d",&arr[i]);
for(int i = 1; i < n ; i++){
for(int j = 1; j < n - i + 1 ; j++){
if(arr[j] > arr[j + 1]) swap(arr[j],arr[j + 1]);
}
}
int a = arr[n - 1] - arr[1];
int b = arr[n] - arr[2];
if(a > b) printf("%d",b);
else printf("%d",a);
return 0;
}
直接照着你的思路写的,优化了一下。直接用sort吧,挺香的
// Author:PanDaoxi
#include <bits/stdc++.h>
using namespace std;
const int INF = 1e6 + 1;
int n, x, y, a[INF];
int main(){
ios :: sync_with_stdio(false);
cin >> n;
for(int i=1; i<=n; i++){
cin >> a[i];
}
sort(a+1, a+n+1);
x = a[n-1] - a[1],
y = a[n] - a[2];
cout << min(x, y);
return 0;
}
你的时间复杂度是O(n^2),建议不要for循环嵌套,去看一下题目的单点测试时间,优化代码或者换个算法