列表

详情


NC200126. zn的游戏

描述

某个课间, 同学们都在认真学习, 就zn在颓废
zn在颓废什么呢, 他在纸上随便写了n个数字,    然后他想找一个区间[l, r]使得这个区间包含全部数字的最大值和最小值, 并且这个区间长度尽可能小

输入描述

第一行一个整数n
第二行n个整数ai

输出描述

最小的区间长度

示例1

输入:

4
2 3 2 3

输出:

2

说明:

任意一个大小为2的区间都能覆盖

原站题解

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

C++ 解法, 执行用时: 822ms, 内存消耗: 91144K, 提交时间: 2021-07-13 14:23:32

#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e7+7,INF=0x3f3f3f;
int l=-INF,r=-INF*2,ans=INF,mx=0,mn=INF,a[maxn];
int main(){
	int n;
	scanf("%d",&n);	
	for(int i=0;i<n;i++){
		scanf("%d",a+i);
		mx=max(mx,a[i]);
		mn=min(mn,a[i]);
	}
	for(int i=0;i<n;i++){
		if(a[i]==mn)l=i;
		if(a[i]==mx)r=i;
		ans=min(ans,abs(r-l)+1);
	}
	cout<<ans;
}

上一题