leetcode904. 水果成篮(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
leetcode904. 水果成篮(滑动窗口)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
二:上碼
class Solution { public:/**思路:滑動窗口1.滑動窗口為我們 兩個品種水果的個數2.滑動窗口的起始位置為數組的起始位置,當遇見一個新的水果種類的時候,這時候就需要移動我們的起始位置這里移動起始位置是要注意的,我們需要移動起始到我們的窗口中 完全沒有 這個品種為止3.滑動窗口的終止位置為數組下標*/int totalFruit(vector<int>& fruits) {int length = 0;//窗口的大小int i = 0;//窗口的起始位置int ans = 0;map<int,int>m;//key值變表示蘋果的種類 ,value 表示該品種的數量 map<int,int>::iterator mt;for (int j = 0; j < fruits.size(); j++) { m[fruits[j]]++;//每個蘋果的種類加一while(m.size() > 2) {//需要開始移動我們的起始位置length = j-i;ans = ans < length ? length:ans;// 這里的j不用加一,因為我們是統計到第三種水果時進的whilem[fruits[i]]--;//第一種水果的個數遞減if(m[fruits[i]] == 0) {//當其個數為0的時候;我們就要移除此元素m.erase(fruits[i]);} i++;//他會把籃子中的第一種水果 慢慢 耗光,剩下的是我們的第緊貼著的新品種水果//1 1 2 1 2 3 會把1慢慢耗光} }//處理水果種類 小于2種 當然即便水果種類大于3 我們最終也是剩下兩種,我們也是可以對其進行統計的,只不過sumif(m.size() <= 2) { //ans值相等。int sum = 0;for (mt = m.begin(); mt != m.end(); mt++) {sum+=mt->second;}ans = ans < sum ?sum :ans;}return ans;} };總結
以上是生活随笔為你收集整理的leetcode904. 水果成篮(滑动窗口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么开通腾讯视频VIPQQ会员超级会员S
- 下一篇: 漫谈硬盘彻底损坏后的数据抢救