Untitled
unknown
plain_text
8 months ago
1.1 kB
4
Indexable
import java.util.HashMap;
import java.util.Map;
class Solution {
public int maxSizeSlices(int[] slices) {
int n = slices.length / 3;
// Solve for two cases: excluding the first or last slice
return Math.max(
solve(slices, 0, slices.length - 2, n, new HashMap<>()),
solve(slices, 1, slices.length - 1, n, new HashMap<>())
);
}
private int solve(int[] slices, int start, int end, int n, Map<String, Integer> memo) {
if (n == 0) return 0; // No slices left to pick
if (start > end) return 0; // No slices available in this range
String key = start + "," + n;
if (memo.containsKey(key)) {
return memo.get(key);
}
// Two choices: skip the current slice or pick it
int skip = solve(slices, start + 1, end, n, memo);
int pick = slices[start] + solve(slices, start + 2, end, n - 1, memo);
int result = Math.max(skip, pick);
memo.put(key, result);
return result;
}
}
Editor is loading...
Leave a Comment