#### 1476. Subrectangle Queries
=======
```javascript=
var SubrectangleQueries = function(rectangle) {
this.arr = new Array();
this.rows = rectangle.length
this.cols = rectangle[0].length
for(var key in rectangle) {
for(var key2 in rectangle[key]) {
this.arr.push(rectangle[key][key2])
}
}
console.log(this.arr, 'SubrectangleQueries')
};
/**
* @param {number} row1
* @param {number} col1
* @param {number} row2
* @param {number} col2
* @param {number} newValue
* @return {void}
*/
SubrectangleQueries.prototype.updateSubrectangle = function(row1, col1, row2, col2, newValue) {
console.log(row1 != row2 && col1 == col2, 46)
if(row1 != row2 && col1 == col2) {
for(i = row1 ; i <= row2; i++) {
this.arr[i*this.cols + col1] = newValue
}
} else {
start = row1*this.cols + col1
end = row2*this.cols + col2
this.arr = this.arr.map(function(row, key) {
if( start <= key && key <= end)
return newValue
return row
})
}
console.log(this.arr, 'updateSubrectangle');
return null;
};
/**
* @param {number} row
* @param {number} col
* @return {number}
*/
SubrectangleQueries.prototype.getValue = function(row, col) {
console.log(this.arr[row*this.cols + col], 'getValue');
return this.arr[row*this.cols + col]
};
```
```javascript=
/**
* @param {number[][]} rectangle
*/
var SubrectangleQueries = function(rectangle) {
this.arr = rectangle;
this.rows = rectangle.length
this.cols = rectangle[0].length
console.log(this.arr, 'SubrectangleQueries')
};
/**
* @param {number} row1
* @param {number} col1
* @param {number} row2
* @param {number} col2
* @param {number} newValue
* @return {void}
*/
SubrectangleQueries.prototype.updateSubrectangle = function(row1, col1, row2, col2, newValue) {
if(row1 >= this.rows || row2 >= this.rows || col1 >= this.cols || col2 >= this.cols)
return;
for(i = row1 ; i <= row2; i++) {
for(j = col1 ; j<= col2; j++ ){
this.arr[i][j] = newValue
}
}
console.log(this.arr, 'updateSubrectangle');
return null;
};
/**
* @param {number} row
* @param {number} col
* @return {number}
*/
SubrectangleQueries.prototype.getValue = function(row, col) {
return this.arr[row][col]
};
```
test
["SubrectangleQueries","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue","getValue"]
[[[[1,2,1],[4,3,4],[3,2,1],[1,1,1]]],[0,2],[0,0,3,2,5],[0,2],[3,1],[3,0,3,2,10],[3,1],[0,2]]
["SubrectangleQueries","updateSubrectangle","getValue","getValue","updateSubrectangle","getValue","getValue"]
[[[[3,9,4],[5,6,10]]],[1,1,1,1,5],[1,0],[1,0],[0,0,1,0,6],[1,0],[0,1]]
["SubrectangleQueries","updateSubrectangle","getValue","updateSubrectangle","updateSubrectangle","updateSubrectangle","getValue"]
[[[[9,9],[4,7],[9,6]]],[1,0,2,1,9],[2,0],[0,1,1,1,9],[1,1,2,1,1],[1,0,1,0,9],[0,1]]
["SubrectangleQueries","getValue","getValue","getValue","updateSubrectangle","updateSubrectangle","getValue","updateSubrectangle","updateSubrectangle","updateSubrectangle","getValue","updateSubrectangle","updateSubrectangle","updateSubrectangle","getValue","updateSubrectangle","getValue","updateSubrectangle","getValue","updateSubrectangle","getValue","getValue","updateSubrectangle","updateSubrectangle","updateSubrectangle","getValue","updateSubrectangle","getValue","getValue","getValue","updateSubrectangle","getValue","updateSubrectangle","getValue","getValue","getValue","updateSubrectangle","updateSubrectangle"]
[
[
[
[464,692,376,558,935,968,194,818,494,744,75,834,861,1000,263,418,207],
[9,765,545,789,390,527,898,499,79,414,631,904,523,816,593,599,436],
[42,361,872,470,7,195,984,307,713,708,658,6,554,123,842,310,525],
[909,765,324,995,796,557,661,586,565,290,539,422,556,963,839,950,977],
[531,419,618,646,596,316,464,310,135,519,455,601,144,564,792,998,167],
[259,652,10,435,754,678,580,38,378,431,412,289,959,675,917,770,686],
[19,921,93,948,93,867,5,393,276,476,279,816,801,382,652,768,873],
[493,788,345,398,468,823,120,496,364,149,426,152,19,177,834,267,377],
[879,131,604,806,295,973,423,265,962,527,295,758,431,708,281,444,344],
[796,936,498,221,733,850,504,973,995,412,734,436,94,66,133,212,990],
[154,235,748,27,106,260,160,492,794,976,102,409,666,741,192,855,4],
[92,438,627,978,53,563,224,548,433,356,49,969,668,993,949,106,753],
[567,696,430,855,688,759,122,272,701,286,184,492,825,813,722,879,49],
[806,220,694,660,90,888,400,127,685,459,302,699,521,510,927,403,119],
[621,875,491,109,153,396,629,928,720,207,172,534,264,427,762,910,958],
[550,296,890,505,649,917,830,558,935,220,808,778,639,346,882,498,106],
[9,776,747,674,356,949,907,992,726,274,58,554,641,451,308,779,926],
[863,104,235,521,282,277,724,253,422,152,134,263,200,418,575,646,613],
[926,984,60,546,855,624,522,153,969,424,277,287,492,713,314,274,504],
[220,511,377,614,482,248,347,181,621,778,186,757,902,595,711,462,548],
[154,60,517,334,542,707,139,661,780,832,913,219,323,638,506,492,338],
[122,131,909,144,716,263,231,91,651,552,849,720,52,577,177,702,119],
[232,577,205,516,582,676,906,316,433,336,5,793,21,842,313,842,631],
[226,87,761,230,287,698,641,882,350,276,616,737,531,389,24,125,338],
[356,143,117,257,921,789,147,698,588,43,356,80,95,743,106,308,325]
]
],
[8,16],
[11,0],
[4,12],
[23,3,23,13,337], //updateSubrectangle false
[0,10,16,10,361], //updateSubrectangle true
[19,8],
[2,16,23,16,578], //updateSubrectangle true
[17,9,23,12,648], //updateSubrectangle false
[17,1,19,4,180], //updateSubrectangle false
[6,13],
[17,8,17,16,278], //updateSubrectangle
[15,12,17,12,763], //updateSubrectangle
[2,11,22,15,569], //updateSubrectangle
[19,9], // error
[21,4,22,5,936],
[21,6],
[24,11,24,13,164],
[12,14],
[3,4,22,8,303],
[17,0],
[12,3],
[0,13,24,16,283],
[13,14,19,14,102],
[24,0,24,1,852],
[18,4],
[17,11,21,14,840],
[19,7],
[17,11],[3,1],[13,11,24,13,674],[19,13],[12,9,17,14,452],[20,16],[1,10],[16,5],[10,3,22,12,23],[6,5,18,11,734]]