生活随笔
收集整理的這篇文章主要介紹了
LeetCode 2079. 给植物浇水(前缀和)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
1. 題目
你打算用一個水罐給花園里的 n 株植物澆水。
植物排成一行,從左到右進(jìn)行標(biāo)記,編號從 0 到 n - 1 。其中,第 i 株植物的位置是 x = i 。x = -1 處有一條河,你可以在那里重新灌滿你的水罐。
每一株植物都需要澆特定量的水。你將會按下面描述的方式完成澆水:
- 按從左到右的順序給植物澆水。
- 在給當(dāng)前植物澆完水之后,如果你沒有足夠的水 完全 澆灌下一株植物,那么你就需要返回河邊重新裝滿水罐。
- 你 不能 提前重新灌滿水罐。
最初,你在河邊(也就是,x = -1),在 x 軸上每移動 一個單位 都需要 一步 。
給你一個下標(biāo)從 0 開始的整數(shù)數(shù)組 plants ,數(shù)組由 n 個整數(shù)組成。
其中,plants[i] 為第 i 株植物需要的水量。
另有一個整數(shù) capacity 表示水罐的容量,返回澆灌所有植物需要的 步數(shù) 。
示例
1:
輸入:plants
= [2,2,3,3], capacity
= 5
輸出:
14
解釋:從河邊開始,此時水罐是裝滿的:
- 走到植物
0 (1 步
) ,澆水。水罐中還有
3 單位的水。
- 走到植物
1 (1 步
) ,澆水。水罐中還有
1 單位的水。
- 由于不能完全澆灌植物
2 ,回到河邊取水
(2 步
)。
- 走到植物
2 (3 步
) ,澆水。水罐中還有
2 單位的水。
- 由于不能完全澆灌植物
3 ,回到河邊取水
(3 步
)。
- 走到植物
3 (4 步
) ,澆水。
需要的步數(shù)是
= 1 + 1 + 2 + 3 + 3 + 4 = 14 。示例
2:
輸入:plants
= [1,1,1,4,2,3], capacity
= 4
輸出:
30
解釋:從河邊開始,此時水罐是裝滿的:
- 走到植物
0,
1,
2 (3 步
) ,澆水。回到河邊取水
(3 步
)。
- 走到植物
3 (4 步
) ,澆水。回到河邊取水
(4 步
)。
- 走到植物
4 (5 步
) ,澆水。回到河邊取水
(5 步
)。
- 走到植物
5 (6 步
) ,澆水。
需要的步數(shù)是
= 3 + 3 + 4 + 4 + 5 + 5 + 6 = 30 。示例
3:
輸入:plants
= [7,7,7,7,7,7,7], capacity
= 8
輸出:
49
解釋:每次澆水都需要重新灌滿水罐。
需要的步數(shù)是
= 1 + 1 + 2 + 2 + 3 + 3 + 4 + 4 + 5 + 5 + 6 + 6 + 7 = 49 。提示:
n
== plants
.length
1 <= n
<= 1000
1 <= plants
[i
] <= 10^6
max(plants
[i
]) <= capacity
<= 10^9
來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/watering-plants
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
- 初始化 step 為數(shù)組長度,肯定要走完一遍數(shù)組
- 然后記錄前綴和 是否要超過 容量,要超過的話,步數(shù) + 2*當(dāng)前距離,打滿水,來回的距離,前綴和重新計(jì)算
class Solution {
public:int wateringPlants(vector
<int>& plants
, int capacity
) {int step
= plants
.size(), presum
= 0;for(int i
= 0; i
< plants
.size(); ++i
){if(presum
+plants
[i
] > capacity
) {step
+= 2*i
;presum
= plants
[i
];}elsepresum
+= plants
[i
];}return step
;}
};
0 ms 8.2 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎
總結(jié)
以上是生活随笔為你收集整理的LeetCode 2079. 给植物浇水(前缀和)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。