From 1ef3050db6a554221bd0dd1e9d7bc54984bd6eb1 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Mon, 20 May 2024 14:55:08 +0200 Subject: [PATCH] =?UTF-8?q?java:=20add=20=C2=AB3068.=20Find=20the=20Maximu?= =?UTF-8?q?m=20Sum=20of=20Node=20Values=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- java/find-the-maximum-sum-of-node-values.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 java/find-the-maximum-sum-of-node-values.java diff --git a/java/find-the-maximum-sum-of-node-values.java b/java/find-the-maximum-sum-of-node-values.java new file mode 100644 index 0000000..a3181e6 --- /dev/null +++ b/java/find-the-maximum-sum-of-node-values.java @@ -0,0 +1,22 @@ +class Solution { + private static final int[] EVEN = new int[] {0, 1}; + + public long maximumValueSum(int[] nums, int k, int[][] edges) { + int n = nums.length; + long[][] dp = new long[n + 1][2]; + + dp[n][0] = Integer.MIN_VALUE; + dp[n][1] = 0; + + for (int i = n - 1; i >= 0; --i) { + for (int even : EVEN) { + var xor = dp[i + 1][even ^ 1] + (nums[i] ^ k); + var skip = dp[i + 1][even] + nums[i]; + + dp[i][even] = Math.max(xor, skip); + } + } + + return dp[0][1]; + } +}