3546. 等和矩阵分割 I
This commit is contained in:
parent
d7f5b98838
commit
8a381984c9
55
src/main.rs
55
src/main.rs
|
|
@ -1,40 +1,41 @@
|
||||||
struct Solution;
|
struct Solution;
|
||||||
mod arr;
|
mod arr;
|
||||||
impl Solution {
|
impl Solution {
|
||||||
fn get_product(a: i32, b: i32) -> i32 {
|
pub fn can_partition_grid(grid: Vec<Vec<i32>>) -> bool {
|
||||||
((a as i64 * b as i64) % 12345) as i32
|
let mut sum = 0_i64;
|
||||||
}
|
let mut line = Vec::<i64>::with_capacity(grid.len());
|
||||||
pub fn construct_product_matrix(mut grid: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
|
|
||||||
let mut arr = vec![0; grid.len() * grid[0].len()];
|
|
||||||
let mut ans = vec![0; grid.len() * grid[0].len()];
|
|
||||||
for i in 0..grid.len() {
|
for i in 0..grid.len() {
|
||||||
for j in 0..grid[0].len() {
|
let mut cnt = 0_i64;
|
||||||
arr[i * grid[0].len() + j] = grid[i][j];
|
for j in 0..grid[i].len() {
|
||||||
|
cnt += grid[i][j] as i64;
|
||||||
|
}
|
||||||
|
sum += cnt;
|
||||||
|
line.push(cnt);
|
||||||
|
}
|
||||||
|
let mut lsum = line[0];
|
||||||
|
for i in 1..line.len() {
|
||||||
|
if lsum * 2 == sum {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
lsum += line[i];
|
||||||
|
}
|
||||||
|
let mut column = 0_i64;
|
||||||
|
for i in 0..grid[0].len() - 1 {
|
||||||
|
let mut cnt = 0_i64;
|
||||||
|
for j in 0..grid.len() {
|
||||||
|
cnt += grid[j][i] as i64;
|
||||||
|
}
|
||||||
|
column += cnt;
|
||||||
|
if column * 2 == sum {
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ans[0] = arr[0];
|
false
|
||||||
for i in 1..arr.len() {
|
|
||||||
ans[i] = Solution::get_product(arr[i], ans[i - 1]);
|
|
||||||
}
|
|
||||||
let mut last = arr[ans.len() - 1];
|
|
||||||
for i in (1..arr.len()-1).rev() {
|
|
||||||
let x = arr[i];
|
|
||||||
arr[i] = Solution::get_product(ans[i-1], last);
|
|
||||||
last = Solution::get_product(last, x)
|
|
||||||
}
|
|
||||||
arr[0] = last % 12345;
|
|
||||||
arr[ans.len() - 1] = ans[ans.len() - 2] % 12345;
|
|
||||||
for i in 0..grid.len() {
|
|
||||||
for j in 0..grid[0].len() {
|
|
||||||
grid[i][j] = arr[i * grid[0].len() + j];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
grid
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let result = Solution::construct_product_matrix(arr::make_matrix(r#"[[1,2],[3,4]]"#));
|
let result = Solution::can_partition_grid(arr::make_matrix(r#"[[42047],[57775],[99822]]"#));
|
||||||
println!("{:?}", result);
|
println!("{:?}", result);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue