雷火笔试:寻找最长山脉的长度——输入数组v,输出非负整数。定义山脉:存在m,i,n:v[m]<v[m+1]<…v[i-1]<v[i]>v[i+1]…>v[n-1]>v[n];山脉的长度≥3\geq 3≥3,v的长度≥3\geq 3≥3
例:输入:1,2,3,4,2 输出:5
由于输入格式不好处理,所以果断由C++改成python作答的,成功AC。
import sys
l=input()
l=l.split(',')
for i in range(len(l)):
l[i]=(int(l[i]))
start=0
end=len(l)-1
while not l[start]<l[start+1]:
start+=1
if start==end-1:
print(0)
sys.exit()
while not l[end]<l[end-1]:
end-=1
if start==end-1:
print(0)
sys.exit()
flag=1
c=0
maxc=0
for i in range(start, end, 1):
if flag==1:
if l[i]<l[i+1]:
c+=1
elif l[i]>l[i+1]:
c+=1
flag=-1
else:
c=0
flag=0
elif flag==-1:
if l[i]<l[i+1]:
maxc=maxc if maxc>c+1 else c+1
c=1
flag=1
elif l[i]>l[i+1]:
c+=1
else:
maxc=maxc if maxc>c+1 else c+1
c=0
flag=0
else:
if l[i]<l[i+1]:
c=1
flag=1
else:
c=0
flag=0
if c>maxc:
maxc=c
if flag!=0:
c+=1
if c>maxc:
maxc=c
print(maxc)