diff --git a/src/problem/mod.rs b/src/problem/mod.rs index 5eb218c..b1b910a 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -72,4 +72,5 @@ mod p2386_find_the_k_sum_of_an_array; mod p299_bulls_and_cows; mod p2129_capitalize_the_title; mod p1261_find_elements_in_a_contaminated_binary_tree; -mod p2864_maximum_odd_binary_number; \ No newline at end of file +mod p2864_maximum_odd_binary_number; +mod p2789_largest_element_in_an_array_after_merge_operations; \ No newline at end of file diff --git a/src/problem/p2789_largest_element_in_an_array_after_merge_operations.rs b/src/problem/p2789_largest_element_in_an_array_after_merge_operations.rs new file mode 100644 index 0000000..59ee64c --- /dev/null +++ b/src/problem/p2789_largest_element_in_an_array_after_merge_operations.rs @@ -0,0 +1,39 @@ +/** + * [2789] Largest Element in an Array after Merge Operations + */ +pub struct Solution {} + + +// submission codes start here + +impl Solution { + pub fn max_array_value(nums: Vec) -> i64 { + let mut nums: Vec = nums.iter() + .map(|x| *x as i64) + .collect(); + + let mut result = nums[0]; + for i in (0..(nums.len() - 1)).rev() { + if nums[i] <= nums[i + 1] { + nums[i] = nums[i] + nums[i + 1]; + + result = result.max(nums[i]); + } + } + + result + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_2789() { + assert_eq!(21, Solution::max_array_value(vec![2,3,7,9,3])); + assert_eq!(11, Solution::max_array_value(vec![5,3,3])); + } +}