Skip to content

Commit b7929f7

Browse files
solves maximize sum of array in java
1 parent 412ec9d commit b7929f7

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@
270270
| 997 | [Find the Town Judge](https://leetcode.com/problems/find-the-town-judge) | [![Java](assets/java.png)](src/FindTheTownJudge.java) |
271271
| 999 | [Available Captures for Rook](https://leetcode.com/problems/available-captures-for-rook) | [![Java](assets/java.png)](src/AvailableCapturesForRook.java) |
272272
| 1002 | [Find Common Characters](https://leetcode.com/problems/find-common-characters) | [![Java](assets/java.png)](src/FindCommonCharacters.java) |
273-
| 1005 | [Maximize Sum of Array After K Negations](https://leetcode.com/problems/maximize-sum-of-array-after-k-negations) | |
273+
| 1005 | [Maximize Sum of Array After K Negations](https://leetcode.com/problems/maximize-sum-of-array-after-k-negations) | [![Java](assets/java.png)](src/MaximizeSumOfArrayAfterKNegations.java) |
274274
| 1009 | [Complement of Base 10 Integer](https://leetcode.com/problems/complement-of-base-10-integer) | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NumberComplement.java) |
275275
| 1010 | [Pairs of Songs With Total Durations Divisible by 60](https://leetcode.com/problems/pairs-of-songs-with-total-durations-divisible-by-60) | |
276276
| 1013 | [Partition Array into Three Parts with equal Sum](https://leetcode.com/problems/partition-array-into-three-parts-with-equal-sum) | |
+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.Arrays;
2+
3+
public class MaximizeSumOfArrayAfterKNegations {
4+
public int largestSumAfterKNegations(int[] nums, int k) {
5+
Arrays.sort(nums);
6+
int sum = 0, index = 0;
7+
for ( ; index < nums.length && k > 0 ; index++) {
8+
if (nums[index] < 0) {
9+
sum -= nums[index];
10+
k--;
11+
} else break;
12+
}
13+
if ((k & 1) == 1) {
14+
if (index < nums.length) {
15+
if (index == 0) sum -= nums[index];
16+
else if (-nums[index - 1] < nums[index]) sum += 2 * nums[index - 1] + nums[index];
17+
else sum -= nums[index];
18+
index++;
19+
} else return sum + 2 * nums[nums.length - 1];
20+
}
21+
for ( ; index < nums.length ; index++) {
22+
sum += nums[index];
23+
}
24+
return sum;
25+
}
26+
}

0 commit comments

Comments
 (0)