You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:57:35