zoukankan      html  css  js  c++  java
  • 304. 二维区域和检索

    • 暴力穷举
    class NumMatrix {
    
        private int[][] matrix;
    
        public NumMatrix(int[][] matrix) {
            this.matrix = matrix;
        }
    
        public int sumRegion(int row1, int col1, int row2, int col2) {
            int sum = 0;
            for (int i = row1; i <= row2; i++) {
                for (int j = col1; j <= col2; j++) {
                    sum += matrix[i][j];
                }
            }
            return sum;
        }
    }
    
    • dp cache 递推公式
    class NumMatrix {
    
        private int[][] numMatrix;
    
        public NumMatrix(int[][] matrix) {
            if (matrix == null || matrix.length == 0) {
                numMatrix = new int[0][0];
                return;
            }
            numMatrix = new int[matrix.length][matrix[0].length];
            for (int i = 0; i < matrix.length; i++) {
                for (int j = 0; j < matrix[i].length; j++) {
                    if(i==0 && j == 0) {
                        numMatrix[i][j] = matrix[i][j];
                    } else if(i==0 && j != 0) {
                        numMatrix[i][j] = numMatrix[i][j-1] + matrix[i][j];
                    } else if (i!=0 && j == 0) {
                        numMatrix[i][j] = numMatrix[i-1][j] + matrix[i][j];
                    } else {
                        numMatrix[i][j] = numMatrix[i][j-1] + numMatrix[i-1][j] - numMatrix[i-1][j-1] + matrix[i][j];
                    }
                }
            }
        }
    
        public int sumRegion(int row1, int col1, int row2, int col2) {
            if (row1 == 0 && col1 == 0) {
                return numMatrix[row2][col2];
            } else if (row1 == 0) {
                return numMatrix[row2][col2] - numMatrix[row2][col1-1];
            } else if (col1 == 0) {
                return numMatrix[row2][col2] - numMatrix[row1-1][col2];
            } else {
                return numMatrix[row2][col2] - numMatrix[row2][col1-1] - numMatrix[row1-1][col2] + numMatrix[row1-1][col1-1];
            }
        }
    }
    
  • 相关阅读:
    电子商务概论【0351】
    数据库原理
    建筑结构CAD[0753]
    计算机图像处理基础[9124]
    计算机基础[1056]
    计算机组成原理【0013】
    C语言程序设计【0039】
    计算机基础1056
    专业英语[0089]
    double数据转换成char字符串的函数——dtostrf()用法
  • 原文地址:https://www.cnblogs.com/lasclocker/p/11337134.html
Copyright © 2011-2022 走看看