Skip to content

Commit 8e2c1f5

Browse files
authored
Update k-concatenation-maximum-sum.cpp
1 parent 05225de commit 8e2c1f5

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

C++/k-concatenation-maximum-sum.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,19 @@ class Solution {
66
int kConcatenationMaxSum(vector<int>& arr, int k) {
77
static const int MOD = 1e9 + 7;
88
if (k == 1) {
9-
return maxSubKArray(arr, 1) % MOD;
9+
return max(maxSubKArray(arr, 1), 0) % MOD;
1010
}
11-
return (maxSubKArray(arr, 2) +
11+
return (max(maxSubKArray(arr, 2), 0) +
1212
(k - 2) * max(accumulate(arr.cbegin(), arr.cend(), 0ll), 0ll)) % MOD;
1313
}
1414

1515
private:
1616
int maxSubKArray(const vector<int>& nums, int k) {
17-
int result = 0, curr = 0;
17+
int result = numeric_limits<int>::min();
18+
int curr = numeric_limits<int>::min();
1819
for (int i = 0; i < k; ++i) {
1920
for (const auto& x : nums) {
20-
curr = max(curr + x, x);
21+
curr = (curr == numeric_limits<int>::min()) ? x : max(curr + x, x);
2122
result = max(result, curr);
2223
}
2324
}

0 commit comments

Comments
 (0)