最大最小值
小易给定了一个长度为n的数字序列,对于每一个1<=k<=n,小易希望能求解出所有长度为k的连续子序列的最大值中的最小值。
输入描述:
第一行数字n
接下来一行是一个长度为n的数字序列
1<=n<=100000,0<=ai<=109
输出描述:
一行n个数字,第i个数字表示k = i时的答案。
输入例子1:
6
1 3 2 4 6 5
输出例子1:
1 3 3 4 6 6
例子说明1:
当k = 2的时候
子序列分别是:
1 3 最大值为 3
3 2 最大值为 3
2 4 最大值为 4
4 6 最大值为 6
6 5 最大值为 6
所有最大值中的最小值为3
参考1:
直接法
n = int(input()) num = list(map(int,input().split())) k = 1 while k <= n: res = [] for i in range(n): a = max(num[i:i+k]) res.append(a) if i+k>=n: break print(int(min(res)), end = ' ') k += 1
您的代码已保存
运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
case通过率为30.00%
参考2:
加入break
n = int(input()) num = list(map(int,input().split())) k = 1 m = max(num) p = m while k <= n: res = [] b = m for i in range(n): a = max(num[i:i+k]) b = min(a,b) if b == p: break if i+k>=n: break p = b #当下标记 print(b, end=' ') k += 1
您的代码已保存
运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。
case通过率为60.00%