Leetcode 53. Maximum Subarray

smpl published on
1 min, 143 words

문제 : 53. Maximum Subarray

등급 : Easy

다이나믹 프로그래밍을 적용한 카데인 알고리즘(Kadane's algorithm)으로 풀 수 있다고 한다.

다이나믹 프로그래밍과 카데인 알고리즘에 대해서는 아래 링크의 글을 참고하였다.

pub(self) mod first_try {
    pub struct Solution;

    impl Solution {
        pub fn max_sub_array(nums: Vec<i32>) -> i32 {
            let (mut max , mut tmp) = (i32::MIN, 0);
            for n in nums.iter() {
                tmp = std::cmp::max(tmp + n, *n);
                max = std::cmp::max(tmp, max);
            }
            max
        }
    }
}

#[cfg(test)]
mod tests {
    use super::first_try::Solution;

    #[test]
    fn example() {
        assert_eq!(Solution::max_sub_array(vec![-2,1,-3,4,-1,2,1,-5,4]), 6);
        assert_eq!(Solution::max_sub_array(vec![1]), 1);
        assert_eq!(Solution::max_sub_array(vec![5,4,-1,7,8]), 23);
    }
}