Two Pointer
右邊一直向前走
若是當前區間已經不合法, 則更新左邊直到合法為止
國人部落格跟LeetCode官方討論區充斥各種假解
要嘛更新左邊只更新一次
要嘛更新左邊時沒有同步更新當前主要char
不知道是測資太弱還是怎樣= ="
誰說AI時代code review才變得很重要呢?
搜尋引擎時代早就存在的問題
只是goolge search還搜不到一整個會動的code而已
std::max_element回傳的是iterator還要自己「*」
C++真的是太愚蠢了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | class Solution { public: int characterReplacement(string s, int k) { int N = s.size(); std::vector<int> cnt(26); int ans = 0; int left = 0; int primeCnt=0; for (int right = 0; right < N; right++) { int rightIdx = s[right] - 'A'; cnt[rightIdx]++; primeCnt = max(primeCnt, cnt[rightIdx]); while ((right - left + 1) - primeCnt > k) { int leftIdx = s[left] - 'A'; cnt[leftIdx]--; left++; primeCnt = *std::max_element(cnt.begin(), cnt.end()); } ans = max(ans, right - left + 1); } return ans; } }; |