1537. Get the Maximum Score

Difficulty:
Related Topics:
Similar Questions:

Problem

You are given two sorted arrays of distinct integers nums1 and nums2.

A valid ****path is defined as follows:

The score is defined as the sum of uniques values in a valid path.

Return **the maximum score you can obtain of all possible *valid paths***. Since the answer may be too large, return it modulo 10^9 + 7.

  Example 1:

Input: nums1 = [2,4,5,8,10], nums2 = [4,6,8,9]
Output: 30
Explanation: Valid paths:
[2,4,5,8,10], [2,4,5,8,9], [2,4,6,8,9], [2,4,6,8,10],  (starting from nums1)
[4,6,8,9], [4,5,8,10], [4,5,8,9], [4,6,8,10]    (starting from nums2)
The maximum is obtained with the path in green [2,4,6,8,10].

Example 2:

Input: nums1 = [1,3,5,7,9], nums2 = [3,5,100]
Output: 10^9
Explanation: Maximum sum is obtained with the path [1,3,5,100].

Example 3:

Input: nums1 = [1,2,3,4,5], nums2 = [6,7,8,9,10]
Output: 40
Explanation: There are no common elements between nums1 and nums2.
Maximum sum is obtained with the path [6,7,8,9,10].

  Constraints:

Solution

class Solution {
    public int maxSum(int[] nums1, int[] nums2) {
        int mod = 1000000007;
        long result = 0;
        int start1 = 0;
        int start2 = 0;
        long sum1 = 0;
        long sum2 = 0;
        while (start1 < nums1.length && start2 < nums2.length) {
            if (nums1[start1] < nums2[start2]) {
                sum1 += nums1[start1];
                start1++;
            } else if (nums1[start1] > nums2[start2]) {
                sum2 += nums2[start2];
                start2++;
            } else {
                result += Math.max(sum1, sum2) + nums1[start1];
                start1++;
                start2++;
                sum1 = 0;
                sum2 = 0;
            }
        }
        while (start1 < nums1.length) {
            sum1 += nums1[start1];
            start1++;
        }
        while (start2 < nums2.length) {
            sum2 += nums2[start2];
            start2++;
        }
        return (int) ((Math.max(sum1, sum2) + result) % mod);
    }
}

Explain:

nope.

Complexity: