public int minimumOperations(List<Integer> nums) {
int n = nums.size();
int[][] dp = new int[n][3];
for (int i = nums.get(0) - 1; i < 3; i++) {
dp[0][i] = 1;
}
for (int i = 1; i < n; i++) {
int num = nums.get(i) -1;
dp[i][0] = dp[i-1][0];
dp[i][1] = dp[i-1][1];
dp[i][2] = dp[i-1][2];
if (num == 0) {
dp[i][0] += 1;
} else if (num == 1) {
dp[i][1] = Math.max(dp[i - 1][0], dp[i - 1][1]) + 1;
}else{
dp[i][2] = Math.max(Math.max(dp[i - 1][0], dp[i - 1][1]), dp[i - 1][2]) + 1;
}
}
int max = Math.max(dp[n - 1][0], Math.max(dp[n - 1][1], dp[n - 1][2]));
return n - max;
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.