每次一遇見雙指標就頭疼,主要還是模板不到位。就像二分一樣,有乙個好的模板事半功倍。這次也看到了乙個好的雙指標模板:右邊每次只動乙個,到最右就停止。左邊看條件動,用counter統計區間條件。
雙指標一般對應區間問題,此題可理解為選乙個最大區間,裡面最多出現的元素不少於n-k個,之後用雙指標就非常舒服了。
class
solution
:def
characterreplacement
(self, s:
str, k:
int)
->
int:
n =len(s)
ret =
0 left, right =0,
0 counter = counter(
)while right < n:
# 更新counter
counter[s[right]]+=
1# 左指標移動直至滿足條件
while left < right and counter.most_common(1)
[0][
1]+k < right-left+1:
counter[s[left]]-=
1 left +=
1if right-left+
1> ret:
ret = right-left+
1 right +=
1return ret
LeetCode 424 替換後的最長重複字元
這道題直接照搬了官方題解,接下來認真刷兩道滑動視窗吧。給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換k次。在執行上述操作後,找到包含重複字母的最長子串的長度。注意 字串長度 和k不會超過104。示例1 輸入 s abab k 2 輸出 4 解釋 用兩個 ...
Leetcode 題解 雙指標
雙指標 有序陣列 字串翻轉 環形鍊錶問題 雙指標主要用於遍歷陣列,兩個指標指向不同的元素,從而協同完成任務。有序陣列的 two sum1 leetcode 167.two sum ii input array is sorted easy input numbers target 9 output ...
leetcode 雙指標專題
題目 4.尋找兩個有序陣列的中位數 解析 通過2個下標來依次比較2個陣列的元素,直到走過的數量達到一半,複雜度 m n 2 答案 double findmediansortedarrays int nums1,int nums1size,int nums2,int nums2size else co...