在一排樹中,第 i 棵樹產生 tree[i] 型的水果。
你可以從你選擇的任何樹開始,然後重複執行以下步驟:
把這棵樹上的水果放進你的籃子裡。如果你做不到,就停下來。
移動到當前樹右側的下一棵樹。如果右邊沒有樹,就停下來。
請注意,在選擇一顆樹後,你沒有任何選擇:你必須執行步驟 1,然後執行步驟 2,然後返回步驟 1,然後執行步驟 2,依此類推,直至停止。
你有兩個籃子,每個籃子可以攜帶任何數量的水果,但你希望每個籃子只攜帶一種型別的水果。
用這個程式你能收集的水果總量是多少?
示例 1:
輸入:[1,2,1]
輸出:3
解釋:我們可以收集 [1,2,1]。
示例 2:
輸入:[0,1,2,2]
輸出:3
解釋:我們可以收集 [1,2,2].
如果我們從第一棵樹開始,我們將只能收集到 [0, 1]。
示例 3:
輸入:[1,2,3,2,2]
輸出:4
解釋:我們可以收集 [2,3,2,2].
如果我們從第一棵樹開始,我們將只能收集到 [1, 2]。
示例 4:
輸入:[3,3,3,1,2,1,1,2,3,3,4]
輸出:5
解釋:我們可以收集 [1,2,1,1,2].
如果我們從第一棵樹或第八棵樹開始,我們將只能收集到 4 個水果。
1 <= tree.length <= 40000
0 <= tree[i] < tree.length
思路分
析:\color思路分析:
思路分析
:構造乙個虛擬的視窗[left, right),當視窗tree[left, right)中的水果種數不多於2時,擴大右邊界,此時視窗的大小就是可獲取的水果種數,否則視窗中的水果種數超過2,則縮小左邊界。
class
solution
right = left;
if(right < treesize)
//當視窗tree[left, right)中的水果種數不多於2時,擴大右邊界
while
(right < treesize)
else
} maxres =
max(maxres, tempres)
;//更新最大的水果數
Leetcode 904 水果成籃
在一排樹中,第i棵樹產生tree i 型的水果。你可以從你選擇的任何樹開始,然後重複執行以下步驟 把這棵樹上的水果放進你的籃子裡。如果你做不到,就停下來。移動到當前樹右側的下一棵樹。如果右邊沒有樹,就停下來。請注意,在選擇一顆樹後,你沒有任何選擇 你必須執行步驟 1,然後執行步驟 2,然後返回步驟 ...
904 水果成籃
weekly contest 102的第一題水果成籃 在一排樹中,第 i 棵樹產生tree i 型的水果。你可以從你選擇的任何樹開始,然後重複執行以下步驟 把這棵樹上的水果放進你的籃子裡。如果你做不到,就停下來。移動到當前樹右側的下一棵樹。如果右邊沒有樹,就停下來。請注意,在選擇一顆樹後,你沒有任何...
lintcode 水果成籃
在一排樹中,第 i 棵樹產生 tree i 型的水果。你可以從你選擇的任何樹開始,然後重複執行以下步驟 把這棵樹上的水果放進你的籃子裡。如果你做不到,就停下來。移動到當前樹右側的下一棵樹。如果右邊沒有樹,就停下來。請注意,在選擇一顆樹後,你沒有任何選擇 你必須執行步驟 1,然後執行步驟 2,然後返回...