zoukankan      html  css  js  c++  java
  • May LeetCoding Challenge21 之 动态规划的min使用

    动态转移方程为:matrix[i][j] = Math.min(Math.min(matrix[i-1][j-1], matrix[i][j-1]), matrix[i-1][j]) + 1;

    JAVA

    class Solution {
        public int countSquares(int[][] matrix) {
            int r = matrix.length;
            int c = matrix[0].length;
            if(r == 0 || c == 0) return 0;
            int res = 0;
            for(int i = 1; i < r; i++){
                for(int j = 1; j < c; j++){
                    if(matrix[i][j] != 0)
                        matrix[i][j] = Math.min(Math.min(matrix[i-1][j-1], matrix[i][j-1]), matrix[i-1][j]) + 1;
                }                 //关键点在于Math.min的使用
            }
            for(int i = 0; i < r; i++){
                for(int j = 0; j < c; j++){
                    res += matrix[i][j];
                }
            }
            return res;
        }
    }

    Python3

    class Solution:
        def countSquares(self, matrix: List[List[int]]) -> int:
            r = len(matrix)
            c = len(matrix[0]);
            res = 0
            for i in range(r):
                for j in range(c):
                    if matrix[i][j] > 0 and i > 0 and j > 0:
                        matrix[i][j] = min(matrix[i-1][j-1], matrix[i-1][j], matrix[i][j-1])+1
                    res += matrix[i][j]
            return res
  • 相关阅读:
    关于我的介绍
    关于这周的作业
    关于这周的学习
    每周学习
    关于这周程序设计
    关于这周的总结
    关于这周的学习
    随机抽签程序报告
    Mysql的主从复制原理及部署
    项目架构脚本
  • 原文地址:https://www.cnblogs.com/yawenw/p/12951353.html
Copyright © 2011-2022 走看看