[Daily] 2021-06-14 MON

less than 1 minute read

LeetCode

Plan

  • Previous
    • Tree (this is mainly for DFS)
    • Array
    • String (this part was a bit of a drawback in last season’s tests.)
  • To-Do
    • File I/O !!! (Mac Setting & basic things are broken… MUST!)
    • Database
    • String
    • Dynamic Programming

Today: Dynamic Programming

1043. Partition Array for Maximum Sum
k-size sliding windows within dp[i]

dp[i] = max(dp[i-j] + max(arr[i-1...i-j]) * j) ・・・・・・・・ j: [1, k]

iMax = arr[i];
for(int j=1; j<=k; j++) {
  iMax = max(iMax, arr[i-j]);
  dp[i] = max(dp[i], dp[i-j] + iMax*j);
}

Additional picks

  • accumulate function:
  #include <numeric>
  accumulate(arr.begin(), arr.being()+k, 0);
  
  • greater:
  sort(arr.begin(), arr.end(), greater<int>());
  

Updated: