From 9f4985f127a344f6a21faab207cfcef9da3eda18 Mon Sep 17 00:00:00 2001 From: specCon18 Date: Thu, 30 May 2024 21:41:41 -0400 Subject: [PATCH] implemented kadanes --- src/kadanes.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/kadanes.rs diff --git a/src/kadanes.rs b/src/kadanes.rs new file mode 100644 index 0000000..f851cc8 --- /dev/null +++ b/src/kadanes.rs @@ -0,0 +1,23 @@ +use std::cmp; + +pub fn kadanes(arr: &[i32]) -> (i32, Vec) { + let mut max_so_far = i32::MIN; + let mut max_ending_here = 0; + let mut start_index = 0; + let mut end_index = 0; + let mut temp_start_index = 0; + + for (i, &num) in arr.iter().enumerate() { + max_ending_here = cmp::max(max_ending_here + num, num); + if max_ending_here == num { + temp_start_index = i; + } + if max_so_far < max_ending_here { + max_so_far = max_ending_here; + start_index = temp_start_index; + end_index = i; + } + } + + (max_so_far, arr[start_index..=end_index].to_vec()) +}