Skip to main content

rustgym/leetcode/
_1476_subrectangle_queries.rs

1struct 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}