当前位置:   article > 正文

乐鑫笔试编程题

乐鑫笔试编程题

题意:存在一根电线杆,可以是第一根或者最后一根,在该电线杆前的电线杆的高度是不增的,在它之后的电线杆的高度是不减的,请求出最少需要调整多少根电线杆的高度、

输入n+1行
第一行整数n表示电线杆数
剩下n行表示电线杆的高度
10
6 3 4 3 3 4 5 5 4 6
输出2
注意是存在,至少调整的数量、

  1. # 就是标记从左到右不满足非递减的数,标记从右到左不满足非递减的数,然后统计i处左右两的不满足条件的标记数,最后取最小
  2. class Solution:
  3. def min_adjustment(self, n: int, hight: 'list[int]'):
  4. dec, inc = [0] * n, [0] * n
  5. def adjusted():
  6. # mark non-decreasing Numbers
  7. low = hight[0]
  8. for i in range(1,n): # from left to right
  9. if hight[i] > low:
  10. dec[i] = 1 # need be adjusted
  11. else:
  12. low = hight[i] # update the value of low
  13. # mark non-increasing Numbers
  14. low = hight[-1]
  15. for j in range(n-2, -1,-1): # from right to left
  16. if hight[j] > low:
  17. inc[j] = 1
  18. else:
  19. low = hight[j]
  20. adjusted()
  21. res = [0] * n
  22. # Suppose i meets the conditions
  23. for i in range(n):
  24. res[i] = sum(dec[:i]) + sum(inc[i+1:])
  25. # return the smallest number
  26. return min(res)
  27. if __name__=='__main__':
  28. s = Solution()
  29. n = int(input().strip())
  30. hight = list(map(int,input().strip().split()))
  31. print(s.min_adjustment(n, hight))

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/1018439
推荐阅读
相关标签
  

闽ICP备14008679号