关闭

【Leetcode】Range Sum Query 2D - Immutable

2414人阅读 评论(0) 收藏 举报
分类:

题目链接:https://leetcode.com/problems/range-sum-query-2d-immutable/
题目:

Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).

Range Sum Query 2D
The above rectangle (with the red border) is defined by (row1, col1) = (2, 1) and (row2, col2) = (4, 3), which contains sum = 8.

Example:

Given matrix = [
  [3, 0, 1, 4, 2],
  [5, 6, 3, 2, 1],
  [1, 2, 0, 1, 5],
  [4, 1, 0, 1, 7],
  [1, 0, 3, 0, 5]
]

sumRegion(2, 1, 4, 3) -> 8
sumRegion(1, 1, 2, 2) -> 11
sumRegion(1, 2, 2, 4) -> 12

Note:

  1. You may assume that the matrix does not change.
  2. There are many calls to sumRegion function.
  3. You may assume that row1 ≤ row2 and col1 ≤ col2.

思路:

简单。。。

算法

int s[][];  
    public  NumMatrix(int[][] matrix) {  
        if (matrix.length != 0) {  
            s = new int[matrix.length][matrix[0].length];  
            s[0][0] = matrix[0][0];  
            for (int i = 1; i < matrix.length; i++) {  
                s[i][0] = s[i - 1][0] + matrix[i][0];  
            }  
            for (int j = 1; j < matrix[0].length; j++) {  
                s[0][j] = s[0][j - 1] + matrix[0][j];  
            }  
            for (int i = 1; i < matrix.length; i++) {  
                for (int j = 1; j < matrix[0].length; j++) {  
                    s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + matrix[i][j];  
                }  
            }  
        }  
    }  
  
    public int sumRegion(int row1, int col1, int row2, int col2) {  
        int s2 = 0, s3 = 0, s4 = 0;  
        if (col1 - 1 >= 0)  
            s2 = s[row2][col1 - 1];  
        if (row1 - 1 >= 0)  
            s3 = s[row1 - 1][col2];  
        if (row1 - 1 >= 0 && col1 - 1 >= 0)  
            s4 = s[row1 - 1][col1 - 1];  
        return s[row2][col2] - s2 - s3 + s4;  
    }  


1
0
查看评论

[leetcode-304]Range Sum Query 2D - Immutable

[leetcode-304]Range Sum Query 2D - Immutable
  • hpingwu
  • hpingwu
  • 2015-11-13 19:48
  • 920

LeetCode(303)Range Sum Query - Immutable

题目Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.Example:Given nums = [-2, 0, 3, -5, 2, -1]sumRa...
  • fly_yr
  • fly_yr
  • 2015-12-04 13:31
  • 3391

[leetcode-303]Range Sum Query - Immutable(java)

问题描述: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.Example: Given nums = [-2, 0, 3, -5, 2, -...
  • zdavb
  • zdavb
  • 2015-11-10 16:03
  • 1705

[leetcode-304]Range Sum Query 2D - Immutable(java)

问题描述:这里写链接内容问题分析: 这道题与上题相似,稍微麻烦一点,就是每个点的值为以(0,0)为左上角,以该点为右下角的全部和。 当计算(row1,col1)到(row2,col2)时,就是计算newMatrix[row2][col2] - newMatrix[row2-1][col1] - ...
  • zdavb
  • zdavb
  • 2015-11-13 00:02
  • 1450

leetcode笔记:Range Sum Query 2D - Immutable

题目大意是,给定一个二维矩阵,计算从下标(row1, col1)到下标: (row2, col2)的子矩阵的和。题目给出了几个测试用例。
  • liyuefeilong
  • liyuefeilong
  • 2016-02-28 18:32
  • 1683

leetcode 303: Range Sum Query - Immutable

Range Sum Query - Immutable Total Accepted: 696 Total Submissions: 2406 Difficulty: Easy Given an integer array nums, find the sum o...
  • xudli
  • xudli
  • 2015-11-10 17:47
  • 4716

Leetcode 303 Range Sum Query - Immutable Python题解

题目大意输入一个数组,给定两个数组的索引i和j(i <= j),计算从索引i到j的和。 原题链接:303. Range Sum Query - Immutable题解一开始的时候我打算在初始化的时候用一个二维数组存储所有结果值,然后每次获取和的时候直接访问缓存的二维数组即可。 理想很美好,...
  • laughing2333
  • laughing2333
  • 2017-05-19 23:24
  • 234

[leetcode] 308. Range Sum Query 2D - Mutable 解题报告

题目链接: https://leetcode.com/problems/range-sum-query-2d-mutable/ Given a 2D matrix matrix, find the sum of the elements inside the rectangl...
  • qq508618087
  • qq508618087
  • 2016-03-22 09:17
  • 2681

LeetCode(304)Range Sum Query 2D - Immutable

题目Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (ro...
  • fly_yr
  • fly_yr
  • 2015-12-04 14:22
  • 2214

【Leetcode】303 Range Sum Query - Immutable - 【动态规划】

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Given nums = [-2, 0, 3, -5, 2, -1] s...
  • renxingzhadan
  • renxingzhadan
  • 2016-07-06 01:36
  • 414
    个人资料
    • 访问:567877次
    • 积分:8664
    • 等级:
    • 排名:第2679名
    • 原创:305篇
    • 转载:6篇
    • 译文:0篇
    • 评论:37条
    博客专栏
    文章分类
    最新评论