1537. Get the Maximum Score (Hard) - TengnanYao/daily_leetcode GitHub Wiki

class Solution(object):
    def maxSum(self, nums1, nums2):
        """
        :type nums1: List[int]
        :type nums2: List[int]
        :rtype: int
        """
        n1, n2 = len(nums1), len(nums2)
        result = s1 = s2 = 0
        i = j = 0
        while i < n1 or j < n2:
            if i == n1:
                s2 += sum(nums2[j : ])
                break
            if j == n2:
                s1 += sum(nums1[i : ])
                break
            if nums1[i] > nums2[j]:
                s2 += nums2[j]
                j += 1
            elif nums1[i] < nums2[j]:
                s1 += nums1[i]
                i += 1
            else:
                result += max(s1, s2) + nums1[i]
                s1 = s2 = 0
                i += 1
                j += 1
        result += max(s1, s2)
        return result % (10 ** 9 + 7)