精華區beta Marginalman 關於我們 聯絡資訊
1004. Max Consecutive Ones III 題目: 一個都是 0, 1 的陣列 你可以把最多 k 個 0 翻成 1 (k 不是長度) 求最大連續為 1 的子陣列大小 思路: 這題有雙指標又有滑動窗口 我們需要 左右指標 窗口內零個數 最大連續1個數 共四個 那雙指標都 0 起手 右指標一直滑 碰到 0 就紀錄 如果 0 總數 > k 代表要縮圈 縮圈是 left 一直 +1 碰到 0 就減 count 直到 count <= k 最後每輪都記錄 因為如果一直翻 1 就需要一直紀錄 Code: impl Solution { pub fn longest_ones(nums: Vec<i32>, k: i32) -> i32 { let mut left = 0; let mut right = 0; let mut zero_count = 0; let mut max_len = 0; while right < nums.len() { if nums[right] == 0 { zero_count += 1; while zero_count > k { if nums[left] == 0 { zero_count -= 1; } left += 1; } } max_len = max_len.max(right - left + 1); right += 1; } max_len as i32 } } 不刷了 刷到餓了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.143.163 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1749462207.A.1D9.html ※ 編輯: yam276 (60.248.143.163 臺灣), 06/09/2025 17:44:03