日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

校招真题练习011 种花(美团)

發布時間:2025/7/14 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 校招真题练习011 种花(美团) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

種花

題目描述
公園里有N個花園,初始時每個花園里都沒有種花,園丁將花園從1到N編號并計劃在編號為i的花園里恰好種A_i朵花,他每天會選擇一個區間[L,R](1≤L≤R≤N)并在編號為L到R的花園里各種一朵花,那么園丁至少要花多少天才能完成計劃?

輸入描述:
第一行包含一個整數N,1≤N≤10^5。
第二行包含N個空格隔開的整數A_1到A_N,0≤A_i≤10^4。

輸出描述:
輸出完成計劃所需的最少天數。

思路一:貪心法(AC)

1 if __name__ == '__main__': 2 N = int(input()) 3 ary = list(map(int,input().strip().split())) 4 cnt = 0 5 for i in range(1,N): 6 if ary[i-1] > ary[i]: 7 cnt += ary[i-1] - ary[i] 8 print(cnt + ary[N-1])

?

思路二:分治法(只能通過60%)

1 def findMinIndex(ary): 2 minValue = sys.maxsize 3 minIndex = -1 4 for i in range(len(ary)): 5 if ary[i] < minValue: 6 minValue = ary[i] 7 minIndex = i 8 for i in range(len(ary)): 9 ary[i] -= minValue 10 return ary,minIndex,minValue 11 12 def calFlowers(ary,L,R): 13 if L == R: 14 return ary[L] 15 elif L < R: 16 ary2,minI,minV = findMinIndex(ary[L:R+1]) 17 left = calFlowers(ary2,0,minI-1) 18 right = calFlowers(ary2,minI+1,len(ary2)-1) 19 return left + right + minV 20 else: 21 return 0 22 23 if __name__ == '__main__': 24 N = int(input()) 25 ary = list(map(int,input().strip().split())) 26 27 result = calFlowers(ary,0,N-1) 28 print(result)

?

轉載于:https://www.cnblogs.com/asenyang/p/11100600.html

總結

以上是生活随笔為你收集整理的校招真题练习011 种花(美团)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。