博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode303-304 Range Sum Query Immutable
阅读量:6489 次
发布时间:2019-06-24

本文共 1895 字,大约阅读时间需要 6 分钟。

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]sumRange(0, 2) -> 1sumRange(2, 5) -> -1sumRange(0, 5) -> -3Note:You may assume that the array does not change.There are many calls to sumRange function.

假设有一个整数数组,计算下标从i到j(包含i和j)的数字的和。求和的请求将会在同一个整数数组上多次请求。

这一题思路很简单,因为sum[i-j] = sum[0~j] - sum[0~(i-1)]。我们只需要通过一圈遍历计算出每个下标至0的所有数字的和即可。而利用动态规划则很容易知道sum[0~j] = sum[0~j-1] + num[j]

private int[] sum;    public NumArray(int[] nums) {        this.sum = new int[nums.length];        for(int i = 0 ; i

Range Sum Query Immutable II

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).

clipboard.png

Range Sum Query 2DThe 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) -> 8sumRegion(1, 1, 2, 2) -> 11sumRegion(1, 2, 2, 4) -> 12Note:You may assume that the matrix does not change.There are many calls to sumRegion function.You may assume that row1 ≤ row2 and col1 ≤ col2.

这里将原先的一维数组替换成二维数组。要求计算一个矩形内的所有元素的值。

其实思路还是和原来一样的,sum(row1, column1, row2, column2) = sum(0,0,row2, col1-1) + sum(0,0,row1-1, col2) - sum(0,0,row1-1, col1-1)。这里需要排除一些特殊情况,比如row1=1或是col1=1等。

private int[][] sum;    public NumMatrix(int[][] matrix){        int row = matrix.length;        if(row==0) {sum = new int[0][0]; return;}        int column = matrix[0].length;        sum = new int[row][column];                for(int i = 0 ; i
0? sum[row1-1][col2] : 0 )- (col1>0 ? sum[row2][col1-1] : 0) + (row1>0 && col1>0 ? sum[row1-1][col1-1] : 0); }

clipboard.png

想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

转载地址:http://wwouo.baihongyu.com/

你可能感兴趣的文章
英伟达发布超强大新型芯片用于人工智能
查看>>
Java数据结构与算法(三) 栈和队列
查看>>
以太坊社区激励金计划:支持开发者利用去中心化技术改变世界
查看>>
小程序单元测试
查看>>
POI生成EXCEL文件
查看>>
详细精确阐述jsBridge执行流程的文章
查看>>
并发编程导论
查看>>
使用AndroidX + ViewModel + LiveData + DataBinding等组件搭建的MVVM快速开发框架
查看>>
[译] 关于 React Router 4 的一切
查看>>
Python虚拟环境指南2019版
查看>>
[译] 移动界面设计的 10 项启发式原则
查看>>
前端日志上报的新姿势“Beacon”
查看>>
Android音视频开发笔记(三)--实时相机滤镜&使用Android自带硬编码录制视频
查看>>
什么是Ajax
查看>>
安装webpack并打包
查看>>
Git自学成才——Pull Request
查看>>
Python2和Python3 urllib对照表
查看>>
js无缝滚动插件
查看>>
volatile关键字
查看>>
十分钟搞定mongodb副本集
查看>>