From 1c2b0ba37618e35cd16d904e38568d1ebd39d31d Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Mon, 6 May 2024 14:30:18 -0700 Subject: [PATCH] stolen valor --- longest_ones_with_k_flips/Cargo.toml | 8 +++++++ longest_ones_with_k_flips/src/main.rs | 30 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 longest_ones_with_k_flips/Cargo.toml create mode 100644 longest_ones_with_k_flips/src/main.rs 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 +}