@@ -0,0 +1,33 @@
+struct Solution;
+
+impl Solution {
+ pub fn max_sub_array(nums: Vec<i32>) -> i32 {
+ let n = nums.len();
+ let mut dp_i = nums[0];
+ let mut ans = dp_i;
+ for i in 1..n {
+ dp_i = nums[i].max(dp_i + nums[i]);
+ ans = ans.max(dp_i);
+ }
+ ans
+}
+#[cfg(test)]
+mod tests {
+ use super::*;
+ #[test]
+ fn test_case_1() {
+ let nums = vec![-2, 1, -3, 4, -1, 2, 1, -5, 4];
+ let res = Solution::max_sub_array(nums);
+ assert_eq!(res, 6);
+ fn test_case_2() {
+ let nums = vec![5, 4, -1, 7, 8];
+ assert_eq!(res, 23);
@@ -1,3 +1,4 @@
mod jump_game_2;
mod longest_valid_parentheses;
+mod maximum_subarray;
mod trapping_train_water;