leetcode2826.将三个组排序

java 复制代码
class Solution {
    public int minimumOperations(List<Integer> nums) {
        int[][] dp = new int[nums.size()][3 + 1];
        dp[0][nums.get(0)]=1;
        for (int i = 1; i < nums.size(); i++) {
            dp[i][1]=dp[i-1][1];
            dp[i][2]=dp[i-1][2];
            dp[i][3]=dp[i-1][3];
            switch (nums.get(i)){
                case 1 -> dp[i][1] = Math.max(dp[i - 1][1] + 1, dp[i - 1][0] + 1);
                case 2 -> dp[i][2] = Math.max(dp[i - 1][2] + 1, dp[i - 1][1] + 1);
                case 3-> dp[i][3] = Math.max(dp[i - 1][3] + 1, Math.max(dp[i - 1][2] + 1, dp[i - 1][1] + 1));
            }
        }
        int n = nums.size();
        return n - Math.max(dp[n - 1][1], Math.max(dp[n - 1][2], dp[n - 1][3]));
    }
}

优化版本

java 复制代码
class Solution {
    public int minimumOperations(List<Integer> nums) {
        //1.定义状态
        int _1 = 0, _2 = 0, _3 = 0;//分别表示以1、2、3结尾的子序列长度
        //2.状态转移
        for (int num : nums) {
            switch (num){
                case 1-> _1 = Math.max(_1 + 1, 1);
                case 2-> _2 = Math.max(_2 + 1, _1 + 1);
                case 3-> _3 = Math.max(_3 + 1, Math.max(_2 + 1, _1 + 1));
            }
        }
        //3.返回结果
        return nums.size() - Math.max(_1, Math.max(_2, _3));
    }
}
相关推荐
源码之家32 分钟前
机器学习:基于大数据二手房房价预测与分析系统 可视化 线性回归预测算法 Django框架 链家网站 二手房 计算机毕业设计✅
大数据·算法·机器学习·数据分析·spark·线性回归·推荐算法
Lv Jianwei37 分钟前
Longest Palindromic Substring最长回文子串-学习动态规划Dynamic Programming(DP)
算法
WWZZ20251 小时前
快速上手大模型:深度学习7(实践:卷积层)
人工智能·深度学习·算法·机器人·大模型·卷积神经网络·具身智能
l1t1 小时前
用SQL求解advent of code 2024年23题
数据库·sql·算法
10岁的博客2 小时前
二维差分算法高效解靶场问题
java·服务器·算法
轻微的风格艾丝凡2 小时前
锂电池 SOC 估计技术综述:成熟算法、新颖突破与车企应用实践
算法·汽车
Codeking__2 小时前
动态规划算法经典问题——01背包问题
算法·动态规划
R-G-B2 小时前
归并排序 (BM20 数组中的逆序对)
数据结构·算法·排序算法
少许极端2 小时前
算法奇妙屋(十二)-优先级队列(堆)
数据结构·算法·leetcode·优先级队列··图解算法
kupeThinkPoem3 小时前
哈希表有哪些算法?
数据结构·算法