Skip to content

Commit 3b77f0f

Browse files
Update Solution.java
3 Error's resolved
1 parent eb56c42 commit 3b77f0f

File tree

1 file changed

+29
-28
lines changed
  • solution/1300-1399/1330.Reverse Subarray To Maximize Array Value

1 file changed

+29
-28
lines changed
Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
class Solution {
2-
public int maxValueAfterReverse(int[] nums) {
3-
int n = nums.length;
4-
int s = 0;
5-
for (int i = 0; i < n - 1; ++i) {
6-
s += Math.abs(nums[i] - nums[i + 1]);
7-
}
8-
int ans = s;
9-
for (int i = 0; i < n - 1; ++i) {
10-
ans = Math.max(
11-
ans, s + Math.abs(nums[0] - nums[i + 1]) - Math.abs(nums[i] - nums[i + 1]));
12-
ans = Math.max(
13-
ans, s + Math.abs(nums[n - 1] - nums[i]) - Math.abs(nums[i] - nums[i + 1]));
14-
}
15-
int[] dirs = {1, -1, -1, 1, 1};
16-
final int inf = 1 << 30;
17-
for (int k = 0; k < 4; ++k) {
18-
int k1 = dirs[k], k2 = dirs[k + 1];
19-
int mx = -inf, mi = inf;
20-
for (int i = 0; i < n - 1; ++i) {
21-
int a = k1 * nums[i] + k2 * nums[i + 1];
22-
int b = Math.abs(nums[i] - nums[i + 1]);
23-
mx = Math.max(mx, a - b);
24-
mi = Math.min(mi, a + b);
25-
}
26-
ans = Math.max(ans, s + Math.max(0, mx - mi));
27-
}
28-
return ans;
2+
3+
public int maxValueAfterReverse(int[] nums) {
4+
int n = nums.length;
5+
int s = 0;
6+
for (int i = 0; i < n - 1; ++i) {
7+
s += Math.abs(nums[i] - nums[i + 1]);
298
}
30-
}
9+
int ans = s;
10+
for (int i = 0; i < n - 1; ++i) {
11+
ans = Math.max(
12+
ans, s + Math.abs(nums[0] - nums[i + 1]) - Math.abs(nums[i] - nums[i + 1]));
13+
ans = Math.max(
14+
ans, s + Math.abs(nums[n - 1] - nums[i]) - Math.abs(nums[i] - nums[i + 1]));
15+
}
16+
int[] dirs = {1, -1, -1, 1, 1};
17+
final int inf = 1 << 30;
18+
for (int k = 0; k < 4; ++k) {
19+
int k1 = dirs[k], k2 = dirs[k + 1];
20+
int mx = -inf, mi = inf;
21+
for (int i = 0; i < n - 1; ++i) {
22+
int a = k1 * nums[i] + k2 * nums[i + 1];
23+
int b = Math.abs(nums[i] - nums[i + 1]);
24+
mx = Math.max(mx, a - b);
25+
mi = Math.min(mi, a + b);
26+
}
27+
ans = Math.max(ans, s + Math.max(0, mx - mi));
28+
}
29+
return ans;
30+
}
31+
}

0 commit comments

Comments
 (0)