iT邦幫忙

2025 iThome 鐵人賽

DAY 3
2

https://ithelp.ithome.com.tw/upload/images/20250917/20177944FtBIzSAXhj.jpg

class Solution {//904 O(N) O(1) 因為只有兩種,還不用雜湊表
public:
    int totalFruit(vector<int>& f) {//f代表水果陣列
        int a=-1,b=-1,run=0,cur=0,ans=0;//b永遠最新種;a另一種;run尾端連b的長
        for (int x: f) {//x每次迭代取到一棵樹的種類值
            cur = (x==a || x==b) ? cur+1 : run+1; //合題就延伸; 新b重置為1
            run = (x==b) ? run+1 : 1;//  b 結尾的連段長度
            if (x!=b) { a=b; b=x; }// a要更,b更至最新
            ans = (ans>cur)? ans : cur;
        }
        return ans;
    }
};

//同種->cur++、run++;第三種來->cur=run+1、run=1、a=b,b=x
//同步維護ans=max(ans, cur)
//第三種出現,最長合法尾必是「全 b的段落」,再加上x用run+1。
//run:第三種時,合法最長只剩這段->新視窗長=run + 1。
//ans:歷史最大值(答案)。
//第三種來->只留「全b的視窗最右」+ 新的 x。
//「解耦」:不依賴某外部數值或細節。EX:-1哨兵與 n「脫鉤」


上一篇
Sliding Window 6->7 &教育訓練
下一篇
Sliding Window 8->9 & 需要網頁與ppt好手:O
系列文
轉職仔之Data Science and ai master後的持續精進技術之路5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言