1
1
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 ]);
29
8
}
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