20241118 finished.
This commit is contained in:
parent
a56ab94527
commit
de3d326a1a
|
@ -322,3 +322,5 @@ mod p3239_minimum_number_of_flips_to_make_binary_grid_palindromic_i;
|
|||
mod p3240_minimum_number_of_flips_to_make_binary_grid_palindromic_ii;
|
||||
|
||||
mod p825_friends_of_appropriate_ages;
|
||||
|
||||
mod p661_image_smoother;
|
||||
|
|
69
src/problem/p661_image_smoother.rs
Normal file
69
src/problem/p661_image_smoother.rs
Normal file
|
@ -0,0 +1,69 @@
|
|||
/**
|
||||
* [661] Image Smoother
|
||||
*/
|
||||
pub struct Solution {}
|
||||
|
||||
// submission codes start here
|
||||
|
||||
impl Solution {
|
||||
pub fn image_smoother(img: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
|
||||
let (m, n) = (img.len(), img[0].len());
|
||||
let mut result = vec![vec![0; n]; m];
|
||||
|
||||
let add = |x: usize, y: usize| {
|
||||
img[x][y]
|
||||
+ if x + 1 < m { img[x + 1][y] } else { 0 }
|
||||
+ if x > 0 { img[x - 1][y] } else { 0 }
|
||||
};
|
||||
|
||||
let grid =
|
||||
|x: usize, y: usize| 1 + if x + 1 < m { 1 } else { 0 } + if x > 0 { 1 } else { 0 };
|
||||
|
||||
for x in 0..m {
|
||||
let mut sum = add(x, 0);
|
||||
let mut g = grid(x, 0);
|
||||
|
||||
for y in 0..n {
|
||||
if y + 1 < n {
|
||||
sum += add(x, y + 1);
|
||||
g += grid(x, y + 1);
|
||||
}
|
||||
if y > 1 {
|
||||
sum -= add(x, y - 2);
|
||||
g -= grid(x, y - 2);
|
||||
}
|
||||
|
||||
result[x][y] = sum / g;
|
||||
}
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
}
|
||||
|
||||
// submission codes end
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_661() {
|
||||
assert_eq!(
|
||||
vec![vec![0, 0, 0], vec![0, 0, 0], vec![0, 0, 0]],
|
||||
Solution::image_smoother(vec![vec![1, 1, 1], vec![1, 0, 1], vec![1, 1, 1]])
|
||||
);
|
||||
assert_eq!(
|
||||
vec![
|
||||
vec![137, 141, 137],
|
||||
vec![141, 138, 141],
|
||||
vec![137, 141, 137]
|
||||
],
|
||||
Solution::image_smoother(vec![
|
||||
vec![100, 200, 100],
|
||||
vec![200, 50, 200],
|
||||
vec![100, 200, 100]
|
||||
])
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user