diff --git a/rust/2017-grid-game.rs b/rust/2017-grid-game.rs new file mode 100644 index 000000000..81d01e512 --- /dev/null +++ b/rust/2017-grid-game.rs @@ -0,0 +1,19 @@ +impl Solution { + pub fn grid_game(grid: Vec>) -> i64 { + let n = grid[0].len(); + + let mut memo1 = vec![0;n+1]; + let mut memo2 = vec![0;n+1]; + for i in 0..n { + memo1[i+1] = memo1[i] + grid[0][i] as i64; + memo2[i+1] = memo2[i] + grid[1][i] as i64; + } + + let mut result = i64::max_value(); + for i in 0..n { + result = result.min(memo2[i].max(memo1[n] - memo1[i+1])); + } + + result + } +}