LeetCode LCP 68. 美觀的花束
力扣嘉年華的花店中從左至右擺放了一排鮮花,記錄于整型一維矩陣 flowers 中每個數(shù)字表示該位置所種鮮花的品種編號。你可以選擇一段區(qū)間的鮮花做成插花,且不能丟棄。
在你選擇的插花中,如果每一品種的鮮花數(shù)量都不超過 cnt 朵,那么我們認為這束插花是 「美觀的」。
例如:[5,5,5,6,6] 中品種為 5 的花有 3 朵, 品種為 6 的花有 2 朵,每一品種 的數(shù)量均不超過 3
請返回在這一排鮮花中,共有多少種可選擇的區(qū)間,使得插花是「美觀的」。
注意:
答案需要以 1e9 + 7 (1000000007) 為底取模,如:計算初始結果為:1000000008,請返回 1
示例 1:
輸入:flowers = [1,2,3,2], cnt = 1
輸出:8
解釋:相同的鮮花不超過 1 朵,共有 8 種花束是美觀的;
長度為 1 的區(qū)間 [1]、[2]、[3]、[2] 均滿足條件,共 4 種可選擇區(qū)間
長度為 2 的區(qū)間 [1,2]、[2,3]、[3,2] 均滿足條件,共 3 種可選擇區(qū)間
長度為 3 的區(qū)間 [1,2,3] 滿足條件,共 1 種可選擇區(qū)間。
區(qū)間 [2,3,2],[1,2,3,2] 都包含了 2 朵鮮花 2 ,不滿足條件。
返回總數(shù) 4+3+1 = 8
示例 2:
輸入:flowers = [5,3,3,3], cnt = 2
輸出:8
------------------雙指針處理即可;
我用的是2個while循環(huán),也可以一個for+while;
提示:
1 <= flowers.length <= 10^5
1 <= flowers[i] <= 10^5
1 <= cnt <= 10^5
執(zhí)行用時:47 ms, 在所有?Java?提交中擊敗了28.70%的用戶
內存消耗:53.2 MB, 在所有?Java?提交中擊敗了34.26%的用戶