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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 2105. 给植物浇水 II(双指针)

發布時間:2024/7/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2105. 给植物浇水 II(双指针) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

Alice 和 Bob 打算給花園里的 n 株植物澆水。
植物排成一行,從左到右進行標記,編號從 0 到 n - 1 。其中,第 i 株植物的位置是 x = i 。

每一株植物都需要澆特定量的水。
Alice 和 Bob 每人有一個水罐,最初是滿的 。他們按下面描述的方式完成澆水:

  • Alice 按 從左到右 的順序給植物澆水,從植物 0 開始。
  • Bob 按 從右到左 的順序給植物澆水,從植物 n - 1 開始。他們 同時 給植物澆水。
  • 如果沒有足夠的水 完全 澆灌下一株植物,他 / 她會立即重新灌滿澆水罐。
  • 不管植物需要多少水,澆水所耗費的時間都是一樣的。
  • 不能 提前重新灌滿水罐。
  • 每株植物都可以由 Alice 或者 Bob 來澆水。
  • 如果 Alice 和 Bob 到達同一株植物,那么當前水罐中水更多的人會給這株植物澆水。如果他倆水量相同,那么 Alice 會給這株植物澆水。

給你一個下標從 0 開始的整數數組 plants ,數組由 n 個整數組成。其中,plants[i] 為第 i 株植物需要的水量。
另有兩個整數 capacityA 和 capacityB 分別表示 Alice 和 Bob 水罐的容量。返回兩人澆灌所有植物過程中重新灌滿水罐的 次數

示例 1: 輸入:plants = [2,2,3,3], capacityA = 5, capacityB = 5 輸出:1 解釋: - 最初,Alice 和 Bob 的水罐中各有 5 單元水。 - Alice 給植物 0 澆水,Bob 給植物 3 澆水。 - Alice 和 Bob 現在分別剩下 3 單元和 2 單元水。 - Alice 有足夠的水給植物 1 ,所以她直接澆水。Bob 的水不夠給植物 2 ,所以他先重新裝滿水,再澆水。 所以,兩人澆灌所有植物過程中重新灌滿水罐的次數 = 0 + 0 + 1 + 0 = 1 。示例 2: 輸入:plants = [2,2,3,3], capacityA = 3, capacityB = 4 輸出:2 解釋: - 最初,Alice 的水罐中有 3 單元水,Bob 的水罐中有 4 單元水。 - Alice 給植物 0 澆水,Bob 給植物 3 澆水。 - Alice 和 Bob 現在都只有 1 單元水,并分別需要給植物 1 和植物 2 澆水。 - 由于他們的水量均不足以澆水,所以他們重新灌滿水罐再進行澆水。 所以,兩人澆灌所有植物過程中重新灌滿水罐的次數 = 0 + 1 + 1 + 0 = 2 。示例 3: 輸入:plants = [5], capacityA = 10, capacityB = 8 輸出:0 解釋: - 只有一株植物 - Alice 的水罐有 10 單元水,Bob 的水罐有 8 單元水。因此 Alice 的水罐中水更多,她會給這株植物澆水。 所以,兩人澆灌所有植物過程中重新灌滿水罐的次數 = 0 。示例 4: 輸入:plants = [1,2,4,4,5], capacityA = 6, capacityB = 5 輸出:2 解釋: - 最初,Alice 的水罐中有 6 單元水,Bob 的水罐中有 5 單元水。 - Alice 給植物 0 澆水,Bob 給植物 4 澆水。 - Alice 和 Bob 現在分別剩下 5 單元和 0 單元水。 - Alice 有足夠的水給植物 1 ,所以她直接澆水。Bob 的水不夠給植物 3 ,所以他先重新裝滿水,再澆水。 - Alice 和 Bob 現在分別剩下 3 單元和 1 單元水。 - 由于 Alice 的水更多,所以由她給植物 2 澆水。然而,她水罐里的水不夠給植物 2 ,所以她先重新裝滿水,再澆水。 所以,兩人澆灌所有植物過程中重新灌滿水罐的次數 = 0 + 0 + 1 + 1 + 0 = 2 。示例 5: 輸入:plants = [2,2,5,2,2], capacityA = 5, capacityB = 5 輸出:1 解釋: Alice 和 Bob 都會到達中間的植物,并且此時他倆剩下的水量相同,所以 Alice 會給這株植物澆水。 由于她到達時只剩下 1 單元水,所以需要重新灌滿水罐。 這是唯一一次需要重新灌滿水罐的情況。 所以,兩人澆灌所有植物過程中重新灌滿水罐的次數 = 1 。提示: n == plants.length 1 <= n <= 10^5 1 <= plants[i] <= 10^6 max(plants[i]) <= capacityA, capacityB <= 10^9

來源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/watering-plants-ii
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 雙指針分別置于 0,n-1 向中間同步遍歷
class Solution { public:int minimumRefill(vector<int>& plants, int capacityA, int capacityB) {int ans = 0, i = 0, j = plants.size()-1;int wa = capacityA, wb = capacityB;while(i <= j){if(i < j){if(wa < plants[i]){wa = capacityA;ans++;}if(wb < plants[j]){wb = capacityB;ans++;}}else if(max(wa, wb) < plants[i]) ans++;wa -= plants[i];wb -= plants[j];i++,j--;}return ans;} };

132 ms 76.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 2105. 给植物浇水 II(双指针)的全部內容,希望文章能夠幫你解決所遇到的問題。

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