zoukankan      html  css  js  c++  java
  • LeetCode 1043. Partition Array for Maximum Sum

    原题链接在这里:https://leetcode.com/problems/partition-array-for-maximum-sum/

    题目:

    Given an integer array A, you partition the array into (contiguous) subarrays of length at most K.  After partitioning, each subarray has their values changed to become the maximum value of that subarray.

    Return the largest sum of the given array after partitioning.

    Example 1:

    Input: A = [1,15,7,9,2,5,10], K = 3
    Output: 84
    Explanation: A becomes [15,15,15,9,10,10,10]

    Note:

    1. 1 <= K <= A.length <= 500
    2. 0 <= A[i] <= 10^6

    题解:

    When encounter such kind of problem.

    Could think from a simpler example. Say only one element, then 2 elements and more. Virtualize them, find routines.

    Use array dp to memorize maxmimum sum up to i.

    If, A = [1], then A becomes A[1]. dp = [1].

    A = [1, 15], then A becomes A[15, 15]. dp = [1, 30].

    A = [1, 15, 7], then A becomes A[15, 15, 15]. dp = [1, 30, 45].

    A = [1, 15, 7, 9], then A becomes A[15, 15, 15, 9]. dp = [1, 30, 45, 54].

    ...

    The routine is like from i back k(<= K) steps, find the maxmimum element, curMax * k + dp[i-k](if available).

    Finally return dp[A.length-1].

    Time Complexity: O(n*K). n = A.length.

    Space: O(n).

    AC Java:

     1 class Solution {
     2     public int maxSumAfterPartitioning(int[] A, int K) {
     3         int len = A.length;
     4         int [] dp = new int[len];
     5         for(int i = 0; i<len; i++){
     6             dp[i] = Integer.MIN_VALUE;
     7             int curMax = A[i];
     8             
     9             for(int k = 1; k<=K & i-k+1>=0; k++){
    10                 curMax = Math.max(curMax, A[i-k+1]);
    11                 dp[i] = Math.max(dp[i], (i-k<0 ? 0 : dp[i-k]) + curMax*k);
    12             }
    13         }
    14         
    15         return dp[len-1];
    16     }
    17 }
  • 相关阅读:
    iOS 微信分享提示 未验证应用
    iOS 升级xcode12后原项目模拟器运行报错
    ZK进程监控
    kakafka
    mysql 通过使用联全索引优化Group by查询
    4. php反序列化从入门到放弃(放弃篇)
    微慕小程序专业版V3.5发布-小商店
    C++ Singleton模式
    C语言的clone与mmap调用
    InnoDB MVCC机制
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/11300836.html
Copyright © 2011-2022 走看看