2742. Painting the Walls

Difficulty:
Related Topics:
Similar Questions:

    Problem

    You are given two 0-indexed integer arrays, cost and time, of size n representing the costs and the time taken to paint n different walls respectively. There are two painters available:

    Return **the minimum amount of money required to paint the **n walls.

    Example 1:

    Input: cost = [1,2,3,2], time = [1,2,3,2]
    Output: 3
    Explanation: The walls at index 0 and 1 will be painted by the paid painter, and it will take 3 units of time; meanwhile, the free painter will paint the walls at index 2 and 3, free of cost in 2 units of time. Thus, the total cost is 1 + 2 = 3.
    

    Example 2:

    Input: cost = [2,3,4,2], time = [1,1,1,1]
    Output: 4
    Explanation: The walls at index 0 and 3 will be painted by the paid painter, and it will take 2 units of time; meanwhile, the free painter will paint the walls at index 1 and 2, free of cost in 2 units of time. Thus, the total cost is 2 + 2 = 4.
    

    Constraints:

    Solution (Java)

    class Solution {
        public int paintWalls(int[] cost, int[] time) {
            int n = cost.length, dp[] = new int[n + 1];
            Arrays.fill(dp, (int)1e9);
            dp[0] = 0;
            for (int i = 0; i < n; ++i)
                for (int j = n; j > 0; --j)
                    dp[j] = Math.min(dp[j], dp[Math.max(j - time[i] - 1, 0)] + cost[i]);
            return dp[n];
        }
    }
    

    Explain:

    nope.

    Complexity: