LeetCode-in-Java

3952. Maximum Total Value of Covered Indices

Medium

You are given an integer array nums of length n and a binary string s of length n, where s[i] == '1' means index i initially contains a token and s[i] == '0' means it does not.

You may perform the following operation any number of times:

An index is considered covered if it contains a token after all moves.

Return an integer denoting the maximum total value of nums at the covered indices after optimally performing the operations.

Example 1:

Input: nums = [9,2,6,1], s = “0101”

Output: 15

Explanation:

Example 2:

Input: nums = [5,1,4], s = “001”

Output: 4

Explanation:

Example 3:

Input: nums = [9,3,5], s = “011”

Output: 14

Explanation:

Constraints:

Solution

public class Solution {
    public long maxTotal(int[] nums, String s) {
        int n = nums.length;
        int mn = 100000;
        long res = 0;
        for (int i = n - 1; i >= 0; --i) {
            res += nums[i];
            mn = Math.min(mn, nums[i]);
            if (s.charAt(i) == '0') {
                res -= mn;
                mn = 100000;
            }
        }
        return res;
    }
}