diff --git a/longest_ones_with_k_flips/Cargo.toml b/longest_ones_with_k_flips/Cargo.toml new file mode 100644 index 0000000..9aa9d35 --- /dev/null +++ b/longest_ones_with_k_flips/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "longest_ones_with_k_flips" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/longest_ones_with_k_flips/src/main.rs b/longest_ones_with_k_flips/src/main.rs new file mode 100644 index 0000000..3e7990b --- /dev/null +++ b/longest_ones_with_k_flips/src/main.rs @@ -0,0 +1,30 @@ +fn main() { + //dbg!(l(vec![1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0], 2)); + dbg!(l( + vec![0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1], + 3 + )); +} + +fn l(nums: Vec, k: i32) -> i32 { + let len = nums.len() as i32; + let mut k = k; + let mut start: i32 = -1; + let mut end: i32 = -1; + let nums = &nums; + + while end < len - 1 { + end += 1; + if nums[end as usize] == 0 { + k -= 1; + } + + if k < 0 { + start += 1; + if nums[start as usize] == 0 { + k += 1; + } + } + } + end - start +}