From b0641080b5a60dcb7ab2e480665f5c6114a1cfee Mon Sep 17 00:00:00 2001 From: li_chx Date: Fri, 20 Mar 2026 08:44:00 +0800 Subject: [PATCH] =?UTF-8?q?3567.=20=E5=AD=90=E7=9F=A9=E9=98=B5=E7=9A=84?= =?UTF-8?q?=E6=9C=80=E5=B0=8F=E7=BB=9D=E5=AF=B9=E5=B7=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 68 +++++++++++++++++------------------------------------ 1 file changed, 22 insertions(+), 46 deletions(-) diff --git a/src/main.rs b/src/main.rs index a4ee6ad..6f9dd42 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,53 +1,29 @@ +use std::cmp::min; + struct Solution; mod arr; impl Solution { - pub fn number_of_submatrices(mut grid: Vec>) -> i32 { - let mut arr = vec![vec![(0, 0); grid[0].len()]; grid.len()]; - match grid[0][0] { - '.' => arr[0][0] = (0, 0), - 'X' => arr[0][0] = (0, 1), - 'Y' => arr[0][0] = (1, 0), - _ => {} - } - let mut ans = 0; - for i in 1..grid[0].len() { - let (mut y, mut x) = arr[0][i - 1]; - match grid[0][i] { - 'X' => x += 1, - 'Y' => y += 1, - _ => {} - } - if x == y && x != 0 { - ans += 1; - } - arr[0][i] = (y, x) - } - - for i in 1..grid.len() { - let (mut y, mut x) = arr[i - 1][0]; - match grid[i][0] { - 'X' => x += 1, - 'Y' => y += 1, - _ => {} - } - arr[i][0] = (y, x); - if x == y && x != 0 { - ans += 1; - } - for j in 1..grid[i].len() { - let (ya, xa) = arr[i - 1][j]; - let (yb, xb) = arr[i][j - 1]; - let (yc, xc) = arr[i - 1][j - 1]; - let (mut x, mut y) = (xa + xb - xc, ya + yb - yc); - match grid[i][j] { - 'X' => x += 1, - 'Y' => y += 1, - _ => {} + pub fn min_abs_diff(grid: Vec>, k: i32) -> Vec> { + let k = k as usize; + let mut ans = vec![vec![0; grid[0].len()-k+1]; grid.len()-k+1]; + for i in 0..grid.len() - k+1 { + for j in 0..grid[i].len() - k+1 { + let mut arr = Vec::::with_capacity(k*k); + for l in 0..k { + for m in 0..k { + let val = grid[i+l][j+m]; + arr.push(val); + } } - if x == y && x != 0 { - ans += 1; + arr.sort_unstable(); + let mut val = 1e9 as i32; + for i in 1..arr.len() { + if arr[i-1] == arr[i] { + continue; + } + val = min(val,(arr[i]-arr[i-1]).abs()); } - arr[i][j] = (y, x); + ans[i][j] = if val == 1e9 as i32 { 0 } else { val }; } } ans @@ -55,6 +31,6 @@ impl Solution { } fn main() { - let result = Solution::number_of_submatrices(arr::make_char_matrix(r#"[["X","Y"],["X","Y"]]"#)); + let result = Solution::min_abs_diff(arr::make_matrix(r#"[[1,8],[3,-2]]"#), 2); println!("{:?}", result); }