rustgym/leetcode/
_1476_subrectangle_queries.rs1struct SubrectangleQueries {
2 rectangle: Vec<Vec<i32>>,
3 n: usize,
4 m: usize,
5}
6
7impl SubrectangleQueries {
8 fn new(rectangle: Vec<Vec<i32>>) -> Self {
9 let n = rectangle.len();
10 let m = rectangle[0].len();
11 SubrectangleQueries { rectangle, n, m }
12 }
13
14 fn update_subrectangle(&mut self, row1: i32, col1: i32, row2: i32, col2: i32, new_value: i32) {
15 let r1 = row1 as usize;
16 let c1 = col1 as usize;
17 let r2 = row2 as usize;
18 let c2 = col2 as usize;
19 for i in r1..=r2 {
20 for j in c1..=c2 {
21 self.rectangle[i][j] = new_value;
22 }
23 }
24 }
25
26 fn get_value(&self, row: i32, col: i32) -> i32 {
27 self.rectangle[row as usize][col as usize]
28 }
29}
30
31#[test]
32fn test() {
33 let rectangle = vec_vec_i32![[1, 2, 1], [4, 3, 4], [3, 2, 1], [1, 1, 1]];
34 let mut obj = SubrectangleQueries::new(rectangle);
35 assert_eq!(obj.get_value(0, 2), 1);
36 obj.update_subrectangle(0, 0, 3, 2, 5);
37 assert_eq!(obj.get_value(0, 2), 5);
38}