File tree 1 file changed +52
-0
lines changed
1 file changed +52
-0
lines changed Original file line number Diff line number Diff line change
1
+ // https://leetcode.com/problems/maximize-sum-of-array-after-k-negations/
2
+ //
3
+ // algorithms
4
+ // Easy (45.09%)
5
+ // Total Accepted: 2,968
6
+ // Total Submissions: 6,582
7
+ // beats 100.0% of golang submissions
8
+
9
+ package leetcode
10
+
11
+ import "sort"
12
+
13
+ func largestSumAfterKNegations (A []int , K int ) int {
14
+ length := len (A )
15
+
16
+ sort .Sort (sort .IntSlice (A ))
17
+ i := 0
18
+
19
+ for K > 0 && i < length {
20
+ if A [i ] >= 0 {
21
+ break
22
+ }
23
+ A [i ] = - A [i ]
24
+ i ++
25
+ K --
26
+ }
27
+
28
+ if K == 0 || i == length || A [i ] == 0 {
29
+ return sum (A )
30
+ }
31
+
32
+ K %= 2
33
+ if K == 1 {
34
+ if i > 0 && A [i ] > A [i - 1 ] {
35
+ A [i - 1 ] = - A [i - 1 ]
36
+ } else {
37
+ A [i ] = - A [i ]
38
+ }
39
+ }
40
+
41
+ return sum (A )
42
+ }
43
+
44
+ func sum (A []int ) int {
45
+ res := 0
46
+
47
+ for _ , n := range A {
48
+ res += n
49
+ }
50
+
51
+ return res
52
+ }
You can’t perform that action at this time.
0 commit comments