2024-5-8
- 題目來源
- 我的題解
- 方法一 模擬
題目來源
力扣每日一題;題序:2079
我的題解
方法一 模擬
依次模擬澆水動作
使用一個變量 cap維護剩余的水量,使用t作為還未澆水的樹的下標。當從第 i?1株植物到達第 i株植物時:
- 如果 cap≥plants[i],那么可以完成澆水,需要的步數就是從 i?1 到 i 的 1 步,總步數加1;
- 如果 rest<plants[i],那么無法完成澆水,必須要返回河邊裝滿水罐,需要的步數為:2*t。
依次模擬遍歷
當模擬完成所有 n 株植物的澆水過程之后,就可以返回總步數作為答案。
時間復雜度:O(n)
空間復雜度:O(1)
public int wateringPlants(int[] plants, int capacity) {int res=0;//最紅結果int t=0;//已經當前還未澆水的樹的位置int cap=capacity;//剩余水量while(t<plants.length){// 當還夠澆水while(t<plants.length&&cap>=plants[t]){cap-=plants[t];t++;res+=1;}//只要還未澆完水,需要返回取水,來回兩次的距離if(t!=plants.length){res+=2*t;cap=capacity;} }return res;}
有任何問題,歡迎評論區交流,歡迎評論區提供其它解題思路(代碼),也可以點個贊支持一下作者哈😄~