20250207 finished.

This commit is contained in:
jackfiled 2025-02-07 11:42:31 +08:00
parent d347b2e606
commit fa2663ec4d
2 changed files with 56 additions and 0 deletions

View File

@ -474,3 +474,5 @@ mod p922_sort_array_by_parity_ii;
mod p90_subsets_ii;
mod p47_permutations_ii;
mod p59_spiral_matrix_ii;

View File

@ -0,0 +1,54 @@
/**
* [59] Spiral Matrix II
*/
pub struct Solution {}
// submission codes start here
const DIRECTIONS: [(i32, i32); 4] = [(0, 1), (1, 0), (0, -1), (-1, 0)];
impl Solution {
pub fn generate_matrix(n: i32) -> Vec<Vec<i32>> {
let mut result = vec![vec![0; n as usize]; n as usize];
let (mut x, mut y) = (0, 0);
let mut pos = 0;
for i in 1..=n.pow(2) {
result[x as usize][y as usize] = i;
let (next_x, next_y) = (x + DIRECTIONS[pos].0, y + DIRECTIONS[pos].1);
if next_x < 0
|| next_x >= n
|| next_y < 0
|| next_y >= n
|| result[next_x as usize][next_y as usize] != 0
{
pos = (pos + 1) % 4;
x = x + DIRECTIONS[pos].0;
y = y + DIRECTIONS[pos].1;
} else {
x = next_x;
y = next_y;
}
}
result
}
}
// submission codes end
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_59() {
assert_eq!(vec![vec![1]], Solution::generate_matrix(1));
assert_eq!(
vec![vec![1, 2, 3], vec![8, 9, 4], vec![7, 6, 5]],
Solution::generate_matrix(3)
);
}
}