From cf517aeac3718ee5d42aaa31568646d3437bbe3a Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Tue, 14 May 2024 16:34:13 -0700 Subject: [PATCH] catching up --- find_pivot_index/Cargo.toml | 6 +++++ find_pivot_index/src/main.rs | 24 +++++++++++++++++ .../Cargo.toml | 6 +++++ .../src/main.rs | 27 +++++++++++++++++++ longest_ones_with_k_flips/src/main.rs | 8 +++--- 5 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 find_pivot_index/Cargo.toml create mode 100644 find_pivot_index/src/main.rs create mode 100644 longest_ones_after_deleting_one_element/Cargo.toml create mode 100644 longest_ones_after_deleting_one_element/src/main.rs diff --git a/find_pivot_index/Cargo.toml b/find_pivot_index/Cargo.toml new file mode 100644 index 0000000..8efaac8 --- /dev/null +++ b/find_pivot_index/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "find_pivot_index" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/find_pivot_index/src/main.rs b/find_pivot_index/src/main.rs new file mode 100644 index 0000000..5463c27 --- /dev/null +++ b/find_pivot_index/src/main.rs @@ -0,0 +1,24 @@ +fn main() { + println!("Hello, world!"); +} + +fn f(nums: Vec) -> i32 { + let mut pivot = -1; + let mut rights = Vec::with_capacity(nums.len()); + let mut cur = 0; + for n in nums.iter().rev() { + cur += n; + rights.push(cur); + } + rights.reverse(); + let rights = &rights; + cur = 0; + for (i, num) in nums.into_iter().enumerate() { + cur += num; + if cur == rights[i] { + pivot = i as i32; + break; + } + } + pivot +} diff --git a/longest_ones_after_deleting_one_element/Cargo.toml b/longest_ones_after_deleting_one_element/Cargo.toml new file mode 100644 index 0000000..d02e61d --- /dev/null +++ b/longest_ones_after_deleting_one_element/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "longest_ones_after_deleting_one_element" +version = "0.1.0" +edition = "2021" + +[dependencies] diff --git a/longest_ones_after_deleting_one_element/src/main.rs b/longest_ones_after_deleting_one_element/src/main.rs new file mode 100644 index 0000000..03a2c31 --- /dev/null +++ b/longest_ones_after_deleting_one_element/src/main.rs @@ -0,0 +1,27 @@ +fn main() { + dbg!(l(vec![1, 1, 0, 1])); + dbg!(l(vec![0, 1, 1, 1, 0, 1, 1, 0, 1])); +} + +fn l(nums: Vec) -> i32 { + let nums = &nums; + let len = nums.len(); + let mut max = 0; + let mut start = 0; + let mut zs = 0; + + for (i, &n) in nums.iter().enumerate() { + if n == 0 { + zs += 1; + } + if zs > 1 { + if nums[start as usize] == 0 { + zs -= 1; + } + start += 1; + } + max = max.max(i as i32 - start); + } + + max.min(len as i32 - 1) +} diff --git a/longest_ones_with_k_flips/src/main.rs b/longest_ones_with_k_flips/src/main.rs index c9391b8..967ccb0 100644 --- a/longest_ones_with_k_flips/src/main.rs +++ b/longest_ones_with_k_flips/src/main.rs @@ -10,12 +10,10 @@ 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; - for i in 0..len { - end = i; - if nums[end as usize] == 0 { + for i in 0..len as usize { + if nums[i] == 0 { k -= 1; } @@ -26,5 +24,5 @@ fn l(nums: Vec, k: i32) -> i32 { } } } - end - start + len - start - 1 }