本文主要是介绍算法题(317),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
雷火笔试:寻找最长山脉的长度——输入数组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 sysl=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+=1if start==end-1:print(0)sys.exit()
while not l[end]<l[end-1]:end-=1if 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+=1elif l[i]>l[i+1]:c+=1flag=-1else:c=0flag=0elif flag==-1:if l[i]<l[i+1]:maxc=maxc if maxc>c+1 else c+1c=1flag=1elif l[i]>l[i+1]:c+=1else:maxc=maxc if maxc>c+1 else c+1c=0flag=0else:if l[i]<l[i+1]:c=1flag=1else:c=0flag=0if c>maxc:maxc=c
if flag!=0:c+=1if c>maxc:maxc=c
print(maxc)
这篇关于算法题(317)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!