一最大最小值
小易给定了一个长度为n的数字序列,对于每一个,小易希望能求解出所有长度为k的连续子序列的最大值中的最小值。
输入描述
第一行数字n
接下来一行是一个长度为n的数字序列,
输出描述
一行n个数字,第i个数字表示k = i时的答案。
示例1
输入
6
1 3 2 4 6 5
输出
1 3 3 4 6 6
说明
当k = 2的时候
子序列分别是:
1 3 最大值为 3
3 2 最大值为 3
2 4 最大值为 4
4 6 最大值为 6
6 5 最大值为6 所有最大值中的最小值为3
n=int(input())
lists=list(map(int,input().split()))
result=[]
for i in range(1,n+1):
alist=[]
for j in range(n-i+1):
alist.append(max(lists[j:j+i]))
result.append(min(alist))
print(' '.join(map(str,result)))
二打开文件,读取第三行内容
f=open('hello.txt',r)
for line in f.readlines()[3:4]:
print(line)
f.close()
三相等序列
题目给定a1,a2...an,这样一个长度为n的序列,现在你可以给其中一些元素加上一个值x(只能加一次),然后可以给另外一些值减上一个值x(只能减一次),剩下的元素不能再进行操作。问最后有没有可能找到一个值x使所有元素的值相等。
输入描述
输入第一行为一个整数k,代表有k个序列(k<100),接下来有2*k行:
偶数行为一个整数n,代表给定序列的长度(1<=n<=100,000)
奇数行包含n个元素,a1,a2...an,代表序列中的元素(0<=ai<=100,000)
输出描述
输出k行,每行一个YES或者NO
示例1
输入
1
5
1 3 3 2 1
输出
YES
def fun(k):
for i in range(k):
n=int(input())
alist=list(map(int,input().split()))
l=len(alist)
mid=sum(alist)//l
blist=[]
for i in range(l):
if alist[i]==mid:
continue
elif alist[i]>mid:
gap=alist[i]-mid
blist.append(gap)
else:
gap=mid-alist[i]
blist.append(gap)
for i in range(len(blist)-1):
if blist[i]!=blist[i+1]:
return False
return True
k=int(input())
f=fun(k)
print(f)
m=int(input())
while m>0:
n=int(input())
a=list(map(int,input().split()))
temp=[]
avg=sum(a)//n
for i in a:
if abs(i-avg)!=0:
if abs(i-avg) not in temp:
temp.append(abs(i-avg))
if len(temp)==1:
print("yes")
else:
print("no")
m-=1