zoukankan      html  css  js  c++  java
  • 304. Range Sum Query 2D

    一、题目

      1、审题 

      

      2、分析

        给出一个二维数组,给出两个坐标。求这两个坐标之间的所有元素的和。

    二、解答

      1、思路

        ①、 新建一个数组 sums[rows + 1][cols + 1],其中元素 sums[i+1][j+1] 用于储存 matrix 中从 [0, 0] 到 [i][j] 之间的元素和。

        ②、sums 中第一行与第一列元素均为 0,即处理了 matrix 边界的情况。

    class NumMatrix {
        int[][] sums;
        public NumMatrix(int[][] matrix) {
            int rows = matrix.length;
            int cols; 
            if(rows == 0 || (cols = matrix[0].length) == 0)
                return;
            sums = new int[rows + 1][cols + 1]; 
            for (int i = 1; i <= rows; i++) {
                for (int j = 1; j <= cols; j++) {
                    sums[i][j] = matrix[i - 1][j - 1] + sums[i - 1][j] + sums[i][j - 1] - sums[i - 1][j - 1];
                }
            }
        }
        
        public int sumRegion(int row1, int col1, int row2, int col2) {
            return sums[row2 + 1][col2 + 1] - sums[row2 + 1][col1] - sums[row1][col2 + 1] + sums[row1][col1];
        }
    }
  • 相关阅读:
    Android应用基础概念
    Sqlserver Rand
    sqlite3 锁
    上海盛大网络浩方在线招聘网站程序
    代码片段
    泛型类型的返回
    招 .Net 网站程序员, Flash 程序员
    ACS 20070412 TODO
    MSSQL 2005 分页分析及优化
    虚惊一场
  • 原文地址:https://www.cnblogs.com/skillking/p/10041253.html
Copyright © 2011-2022 走看看