leetcode 904:水果成篮(滑动窗口)
生活随笔
收集整理的這篇文章主要介紹了
leetcode 904:水果成篮(滑动窗口)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一:題目
二:思路
1.用兩個籃子裝進兩個數,后面只能裝入這兩個相同的數,并統計個數;如果遇到其他數,則重新開始計數,
這里的重新開始計數指的是在去除第一個籃子中所裝進的數
2.滑動窗口來做
滑動窗口的起始位置為:數組的起始位置
滑動體為 統計的個數
滑動窗口的結束位置為:遇到第三種水果
三:上碼
int max(int a,int b){return a > b ? a : b; }int totalFruit(vector<int>& fruits) {int j = 0;//起始位置int maxx = 0;//統計最大的個數map<int,int> m;//用于統計兩種水果的數量map<int,int>:: iterator mt;for(int i = 0; i < fruits.size(); i++){m[fruits[i]] += 1;int temp = j;while(m.size() > 2){//當籃子裝入水果遇到第三種水果的時候m[fruits[j]]--;if(m[fruits[j]] == 0){//這是為了淘汰前兩種水果中的第一種m.erase(fruits[j]);} j++;//需要將起始指針往后移}maxx = max(maxx,i-temp);//統計前兩種水果的個數}if(m.size() == 2 || m.size() == 1){//這是特殊處理水果總數為2 和 1的int sum = 0;for(mt = m.begin(); mt != m.end(); mt++){sum += mt->second;} maxx = max(maxx,sum);}return maxx;} };
菜雞杰又水了一篇 ,滑動窗口很nice!!! 加油
總結
以上是生活随笔為你收集整理的leetcode 904:水果成篮(滑动窗口)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTF MICS笔记总结
- 下一篇: 瑞芯微RK3568开发板深度评测