From 8b5de86a59b48ee5f327cea12fc28e26f72d09a3 Mon Sep 17 00:00:00 2001 From: rajputchauhan1 Date: Wed, 27 Oct 2021 21:04:47 +0530 Subject: [PATCH] Added --- Rust/kadane.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Rust/kadane.rs diff --git a/Rust/kadane.rs b/Rust/kadane.rs new file mode 100644 index 0000000..1a609cb --- /dev/null +++ b/Rust/kadane.rs @@ -0,0 +1,28 @@ +use std::cmp::max; + +/** + * Kadane's algorithm (O(n) time) + * Maximum Subarray Problem. + * dp[0] = arr[0] + * dp[i] = max(dp[i-1], 0) + arr[i] + */ +pub fn kadane(arr: &[i64]) -> i64 { + let mut dp: Vec = vec![0; arr.len()]; + dp[0] = arr[0]; + let mut mmax: i64 = dp[0]; + for i in 1..arr.len() { + dp[i] = max(dp[i - 1], 0) + arr[i]; + mmax = max(mmax, dp[i]); + } + return mmax; +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn kadane_test() { + assert_eq!(kadane(&([-3, 1, -8, 12, 0, -3, 5, -9, 4])), 14); + } +}