| 
 | 
 
 
发表于 2020-4-18 00:40:40
|
显示全部楼层
 
 
 
 本帖最后由 阴阳神万物主 于 2020-4-18 00:51 编辑  
 
这个我居然能错…… 
加一行就解决了…… 
 
- def solve(lst:'list of int',how:bool=False)->int:
 
 -     if not lst:
 
 -         raise ValueError('empty lst')
 
 -     le = len(lst)
 
 -     b,s = [lst[0]]*2
 
 -     l,r = 0,0
 
 -     for i in range(le-1):
 
 -         if lst[i]>lst[i+1]:
 
 -             b,s = [lst[i]]*2
 
 -             l,r = i,i
 
 -             break
 
 -     for i in range(l,le):
 
 -         n = lst[i]
 
 -         if n > b:b = n
 
 -         elif n < b:r = i
 
 -         if n < s:
 
 -             s = n
 
 -             for j in range(l,0,-1):
 
 -                 if lst[j] < n:
 
 -                     l = j+1
 
 -                     break
 
 -             else:l = 0
 
 -     if not l and r+1==le:l -= 1
 
 -     if how:print(lst[l+1:r+1])
 
 -     return r-l
 
 - if __name__ == '__main__':
 
 -     print('示例1 输出:',solve([2, 6, 4, 8, 10, 9, 15],1))
 
 -  
 
 
  复制代码 
 
 
 |   
 
 
 
 |