Hill Valley问题代码无法通过全部测试用例,求修正方案
问题定义
当一个数字列表由一段长度至少为2的升序序列后跟一段长度至少为2的降序序列组成时,称为山峰序列(hill);若由一段降序序列后跟一段升序序列组成,则称为山谷序列(valley)。输入序列中连续数字互不相同。
需编写Python函数hillvalley(l),接收整数列表l,若该列表是山峰或山谷序列则返回True,否则返回False。
示例效果
hillvalley([1,2,3,5,4]) # 返回True hillvalley([1,2,3,4,5]) # 返回False hillvalley([5,4,1,2,3]) # 返回True hillvalley([5,4,3,2,1]) # 返回False
我的实现代码
def hillvalley(l): if len(l)<2: return False is_hill = False is_valley = False for i in range(0,len(l)-1): if l[i]<l[i+1]: if l[i+1]==len(l)-1: is_hill = False break elif l[i]>l[i+1]: for j in range(i,len(l)-1): if l[j]>l[j+1]: if l[j+1]==len(l)-1: is_hill = True break elif l[j]<l[j+1]: is_hill = False for i in range(0,len(l)-1): if l[i]>l[i+1]: if l[i+1]==len(l)-1: is_valley = False break elif l[i]<l[i+1]: for j in range(i,len(l)-1): if l[j]<l[j+1]: if l[j+1]==len(l)-1: is_valley = True break elif l[j]>l[j+1]: is_valley = False if l[0]>l[1]: is_hill = False else: is_valley = False return is_hill or is_valley
测试用例问题
- 测试用例8:输入
[1,2,3,5,4,3,2,1],预期返回True,但代码返回False,判定错误。 - 测试用例10:输入
[9,5,4,-1,-2,3,7],预期返回True,代码返回False,判定错误。 - 部分测试用例虽显示通过,但存在格式问题。
我预期代码能通过全部测试用例,但有2个用例输出与预期完全相反,恳请帮忙排查并修正代码。
内容的提问来源于stack exchange,提问作者Secret Coder
相关产品推荐
相关产品推荐

