給一 二維矩陣,計算由左上角 (row1, col1) 和右下角 (row2, col2) 劃定的矩形內元素和.
注意事項:
你可以假設矩陣不變
對函式 sumregion 的呼叫次數有很多次
你可以假設 row1 ≤ row2 並且 col1 ≤ col2
樣例:
給出矩陣
[
[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
思路:
對於規定陣列matrix,構造陣列vec,vec[i][j]表示從matrix[0][0]到matrix[i][j]的區間的陣列元素之和。求sumregion(row1, col1, row2, col2),可以利用公式 su
mreg
ion(
row1
,col
1,ro
w2,c
ol2)
=⎧⎩⎨
⎪⎪⎪⎪
⎪⎪ve
c[ro
w2][
col2
],ve
c[ro
w2][
col2
]−ve
c[ro
w2][
col1
−1],
vec[
row2
][co
l2]−
vec[
row1
−1][
col2
],re
turn
vec[
row2
][co
l2]−
vec[
row2
][co
l1−1
]−ve
c[ro
w1−1
][co
l2]+
vec[
row1
−1][
col1
−1],
row1
==0,c
ol1==
0row
1==0,
col1
!=0r
ow1!
=0,c
ol1==
0oth
er
#ifndef c665_h
#define c665_h
#include
#include
using
namespace
std;
class nummatrix
for (int i = 1; i < row; ++i)
for (int i = 1; i < row; ++i)}}
/** @param row1: an integer
* @param col1: an integer
* @param row2: an integer
* @param col2: an integer
* @return: an integer
*/int sumregion(int row1, int col1, int row2, int col2)
vector
> vec;
};/**
* your nummatrix object will be instantiated and called as such:
* nummatrix obj = new nummatrix(matrix);
* int param_1 = obj.sumregion(row1,col1,row2,col2);
*/#endif
可變範圍求和
給定乙個整數陣列nums,然後你需要實現兩個函式 樣例 1 輸入 nums 1,3,5 sumrange 0,2 update 1,2 sumrange 0,2 輸出 9 8樣例 2 輸入 nums 0,9,5,7,3 sumrange 4,4 sumrange 2,4 update 4,5 upd...
IOS網路請求(可變請求和不可變的區別)
有些方法在可變請求的時候是不能用的。有些剛開始不一定指定它的url那麼可以在後面進行變動。那麼就用可變請求。通常我們的url請求可能是一組,並不是乙個,而且我們的url請求也是會不停的根據流程在變化的,所以我們要仍然使用nsurlrequest這個物件是不能隨時的進行乙個url的變化的,因此我們的n...
範圍矩陣元素和 可變的
給定乙個二維陣列 矩陣 需要查詢它的某個子矩陣的元素的和,同時矩陣內的元素可以被改變.你需要實現三個方法 樣例 1 輸入 nummatrix 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 update 3,2,...