From 0ccf7933048d5f88a6c7d943617a5fb84a162996 Mon Sep 17 00:00:00 2001 From: ishaan-khandelwal Date: Thu, 5 Feb 2026 09:40:01 +0530 Subject: [PATCH] Create leetcode 3640 --- LeetcodeProblems/leetcode 3640 | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 LeetcodeProblems/leetcode 3640 diff --git a/LeetcodeProblems/leetcode 3640 b/LeetcodeProblems/leetcode 3640 new file mode 100644 index 0000000000..cf974dfb6f --- /dev/null +++ b/LeetcodeProblems/leetcode 3640 @@ -0,0 +1,34 @@ +class Solution: + def maximumSum(self, nums: List[int]) -> int: + n = len(nums) + NEG = -10**18 + + up1 = nums[0] # first increasing + down = NEG # increasing -> decreasing + up2 = NEG # increasing -> decreasing -> increasing + + ans = NEG + + for i in range(1, n): + if nums[i] > nums[i - 1]: + new_up2 = max(up2 + nums[i], down + nums[i]) + new_up1 = max(up1 + nums[i], nums[i]) + down = down # unchanged + elif nums[i] < nums[i - 1]: + new_down = max(down + nums[i], up1 + nums[i]) + new_up1 = nums[i] + new_up2 = NEG + down = new_down + up1 = new_up1 + continue + else: + up1 = nums[i] + down = NEG + up2 = NEG + continue + + up1 = new_up1 + up2 = new_up2 + ans = max(ans, up2) + + return ans