首页 > 其他分享 >力扣练习-动态规划

力扣练习-动态规划

时间:2024-04-27 17:45:04浏览次数:24  
标签:元素 练习 力扣 枚举 线性 动态 DP

线性DP

3122. 使矩阵满足条件的最少操作次数

class Solution {
    /*
       问题分类:线性DP问题
       1.每一列元素值相同,相邻列元素值不同,考虑按照列进行状态枚举枚举
       2.0 <= grid[i][j] <= 9,值的范围很小只有10个
       3. f[i][j]可以为考虑前i列并且第i列元素为j的最少操作数目
        
    */
    public int minimumOperations(int[][] grid) {
        int row = grid.length,col = grid[0].length;

        int[][] cnt = new int[col][10];
        for(int r = 0;r < row;r++){
            for(int c = 0;c < col;c++){
                cnt[c][grid[r][c]]++;
            }
        }

        int[][] f = new int[col][10];
        for(int c = 0;c < col;c++){
            Arrays.fill(f[c],Integer.MAX_VALUE);
        }
        for(int v = 0;v < 10;v++){
            f[0][v] = row - cnt[0][v];
        }

        for(int c = 1;c < col;c++){
            for(int v = 0;v < 10;v++){
                for(int pv = 0;pv < 10;pv++){
                    if(pv == v){
                        continue;
                    }
                    f[c][v] = Math.min(f[c-1][pv] + (row - cnt[c][v]),f[c][v]); 
                }
            }
        }

        int res = Integer.MAX_VALUE;
        for(int v = 0;v < 10;v++){
            res = Math.min(res,f[col-1][v]);
        }

        return res;
    }
}

标签:元素,练习,力扣,枚举,线性,动态,DP
From: https://www.cnblogs.com/kfcuj/p/18162290

相关文章

  • 力扣-498. 对角线遍历
    1.题目题目地址(498.对角线遍历-力扣(LeetCode))https://leetcode.cn/problems/diagonal-traverse/题目描述给你一个大小为mxn的矩阵mat,请以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。 示例1:输入:mat=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,4,7,5,3,6......
  • 力扣-520. 检测大写字母
    1.题目题目地址(520.检测大写字母-力扣(LeetCode))https://leetcode.cn/problems/detect-capital/题目描述我们定义,在以下情况时,单词的大写用法是正确的:全部字母都是大写,比如"USA"。单词中所有字母都不是大写,比如"leetcode"。如果单词不只含有一个字母,只有首字母大写......
  • 力扣-59. 螺旋矩阵 II
    1.题目题目地址(59.螺旋矩阵II-力扣(LeetCode))https://leetcode.cn/problems/spiral-matrix-ii/题目描述给你一个正整数 n,生成一个包含1到 n2 所有元素,且元素按顺时针顺序螺旋排列的 nxn正方形矩阵matrix。 示例1:输入:n=3输出:[[1,2,3],[8,9,4],[7,6,5]......
  • 力扣-54. 螺旋矩阵
    1.题目题目地址(54.螺旋矩阵-力扣(LeetCode))https://leetcode.cn/problems/spiral-matrix/题目描述给你一个m行n列的矩阵 matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:......
  • 力扣-419. 甲板上的战舰
    1.题目题目地址(419.甲板上的战舰-力扣(LeetCode))https://leetcode.cn/problems/battleships-in-a-board/题目描述给你一个大小为mxn的矩阵board表示甲板,其中,每个单元格可以是一艘战舰'X'或者是一个空位'.',返回在甲板board上放置的战舰的数量。战舰只能水平......
  • 为什么动态代理只能覆盖 public 方法
    动态代理只能覆盖public方法的原因主要是因为Java的访问权限控制。在Java中,动态代理是通过生成一个继承自Proxy类并实现了指定接口的代理类来实现的。这个代理类必须能够访问被代理对象的方法,但是如果被代理对象的方法不是public,则代理类无法访问这些方法,因此也就无法覆......
  • 力扣-598. 区间加法 II
    1.题目题目地址(598.区间加法II-力扣(LeetCode))https://leetcode.cn/problems/range-addition-ii/题目描述给你一个mx n的矩阵 M和一个操作数组op。矩阵初始化时所有的单元格都为0。ops[i]=[ai,bi]意味着当所有的0<=x<ai和0<=y<bi时,M[x][y]应......
  • 数据库——一些复健(主要是约束和索引相关练习)
    重要的是练习,写作业时写的絮絮叨叨就忽略吧。  强化学习2                    【练习9.1】在stusys数据库中创建course1表,以列级完整性约束方式定义主键。  【练习9.2】在stusys数据库中创建course2表,以表级完整性约束方式定义主键。  ......
  • 猿人学内部练习平台第11题
    第11题:人均会解jsl控制台抓包可以看到,页面请求了两次https://www.python-spider.com/challenge/11第一次返回了一段js代码,第二次返回了所需数据:对比两次请求参数发现,只有cookie中的__jsl_clearance发生了变化,其他参数均相同,因此该值应该是第一次返回的js生成的。清除cookie......
  • 猿人学内部练习平台6~10题
    第六题:session保持检测使用session请求即可:session=requests.Session()第七题:请求规律检测1-post根据请求接口找规律,在每一页请求前请求一次https://www.python-spider.com/cityjson即可requests.post('https://www.python-spider.com/cityjson',verify=False)response=......