1 条题解
-
0
JAVA题解:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] a = new int[n]; for (int i = 0; i < n; i++) { a[i] = sc.nextInt(); } System.out.println(maxSubarrayWithOneFlip(a)); sc.close(); } public static int maxSubarrayWithOneFlip(int[] a) { if (a.length == 0) return 0; int dp0 = a[0]; // 未取反 int dp1 = -a[0]; // 正在取反 int dp2 = a[0]; // 已取反 int ans = Math.max(Math.max(dp0, dp1), dp2); for (int i = 1; i < a.length; i++) { int prev0 = dp0, prev1 = dp1, prev2 = dp2; dp0 = Math.max(prev0 + a[i], a[i]); dp1 = Math.max(prev1 - a[i], prev0 - a[i]); dp2 = Math.max(prev2 + a[i], prev1 + a[i]); ans = Math.max(ans, Math.max(Math.max(dp0, dp1), dp2)); } return ans; } }
- 1
信息
- ID
- 24
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 2
- 已通过
- 1
- 上传者