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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Leetcode 904.水果成蓝(滑动窗口,哈希容器map

發(fā)布時(shí)間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Leetcode 904.水果成蓝(滑动窗口,哈希容器map 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳送門:力扣

你正在探訪一家農(nóng)場(chǎng),農(nóng)場(chǎng)從左到右種植了一排果樹。這些樹用一個(gè)整數(shù)數(shù)組 fruits 表示,其中 fruits[i] 是第 i 棵樹上的水果 種類 。

你想要盡可能多地收集水果。然而,農(nóng)場(chǎng)的主人設(shè)定了一些嚴(yán)格的規(guī)矩,你必須按照要求采摘水果:

你只有 兩個(gè) 籃子,并且每個(gè)籃子只能裝 單一類型 的水果。每個(gè)籃子能夠裝的水果總量沒(méi)有限制。
你可以選擇任意一棵樹開(kāi)始采摘,你必須從 每棵 樹(包括開(kāi)始采摘的樹)上 恰好摘一個(gè)水果 。采摘的水果應(yīng)當(dāng)符合籃子中的水果類型。每采摘一次,你將會(huì)向右移動(dòng)到下一棵樹,并繼續(xù)采摘。
一旦你走到某棵樹前,但水果不符合籃子的水果類型,那么就必須停止采摘。
給你一個(gè)整數(shù)數(shù)組 fruits ,返回你可以收集的水果的 最大 數(shù)目。

示例 1:

輸入:fruits = [1,2,1]
輸出:3
解釋:可以采摘全部 3 棵樹。
示例 2:

輸入:fruits = [0,1,2,2]
輸出:3
解釋:可以采摘 [1,2,2] 這三棵樹。
如果從第一棵樹開(kāi)始采摘,則只能采摘 [0,1] 這兩棵樹。
示例 3:

輸入:fruits = [1,2,3,2,2]
輸出:4
解釋:可以采摘 [2,3,2,2] 這四棵樹。
如果從第一棵樹開(kāi)始采摘,則只能采摘 [1,2] 這兩棵樹。
示例 4:

輸入:fruits = [3,3,3,1,2,1,1,2,3,3,4]
輸出:5
解釋:可以采摘 [1,2,1,1,2] 這五棵樹。
?

提示:

1 <= fruits.length <= 105
0 <= fruits[i] < fruits.length

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/fruit-into-baskets
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

接觸到哈希容器這個(gè)概念,unordered_map,頭文件include<unordered_map>

unordered_map<int, int> basket;//無(wú)序哈希容器。用來(lái)存放不同的值
? ? ? ? //存儲(chǔ)鍵值對(duì) <key, value> 類型的元素,其中各個(gè)鍵值對(duì)鍵的值不允許重復(fù),且該容器中存儲(chǔ)的鍵值對(duì)是無(wú)序的。
? ? ? ? //相對(duì)與map來(lái)說(shuō),map會(huì)
自動(dòng)對(duì)數(shù)據(jù)排序,unordered_map不會(huì)。

#define _CRT_SECURE_NO_WARNINGS 1 #include<iostream> #include<vector> #include<unordered_map> using namespace std;class Solution { public:int totalFruit(vector<int>& tree) {unordered_map<int, int> basket;//無(wú)序哈希容器。用來(lái)存放不同的值//存儲(chǔ)鍵值對(duì) <key, value> 類型的元素,其中各個(gè)鍵值對(duì)鍵的值不允許重復(fù),且該容器中存儲(chǔ)的鍵值對(duì)是無(wú)序的。//相對(duì)與map來(lái)說(shuō),map會(huì)自動(dòng)對(duì)數(shù)據(jù)排序,unordered_map不會(huì)。int result = 0, len = 0;int left = 0;for (int i = 0; i < tree.size(); i++) {basket[tree[i]]++;//桶思想。len++;while (basket.size() > 2) {//超過(guò)兩個(gè)桶的時(shí)候的減桶操作。basket[tree[left]]--;if (basket[tree[left]] == 0) basket.erase(tree[left]);//刪桶。left++;//桶向左移動(dòng)一個(gè)。len--;//減少長(zhǎng)度。}if (result < len) {result = len;}}return result;} }; int main() {int a[] = { 3,3,3,1,2,1,1,2,3,3,4 };vector<int> tree(a, a + sizeof(a) / sizeof(int));Solution solution;cout << solution.totalFruit(tree) << endl; }

總結(jié)

以上是生活随笔為你收集整理的Leetcode 904.水果成蓝(滑动窗口,哈希容器map的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。