diff --git a/src/main.rs b/src/main.rs index 2e9f85f..99d5b35 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,24 +3,31 @@ use std::collections::HashSet; mod arr; struct Solution {} impl Solution { - pub fn missing_integer(nums: Vec) -> i32 { - let mut st = nums.clone().into_iter().collect::>(); - let mut sum = nums[0]; - for i in 1 .. nums.len() { - if nums[i] != nums[i-1] + 1 { - break; + pub fn stone_game(piles: Vec) -> bool { + return true; + let mut mem = vec![vec![vec![]; piles.len()]; piles.len()]; + // a do alice bob; b do alice bob + for j in 0..(piles.len() - 1) { + mem[j][j + 1] = if piles[j] > piles[j + 1] { + vec![piles[j], piles[j + 1]] + } else { + vec![piles[j + 1], piles[j]] + }; + } + for i in 2..piles.len() { + for j in 0..(piles.len() - i) { + mem[j][j+i] = if mem[j][j + i - 1][1] - mem[j][j + i - 1][0] + piles[j + i] + > mem[j + 1][j + i][1] - mem[j + 1][j + i][0] + piles[j] + { + vec![mem[j][j + i - 1][1] + piles[j + i], mem[j][j + i - 1][0]] + } else { + vec![mem[j + 1][j + i][1] + piles[j], mem[j + 1][j + i][0]] + }; } - sum += nums[i]; } - while st.contains(&sum) { - sum += 1; - } - sum + mem[0][piles.len() - 1][0] >mem[0][piles.len() - 1][1] } } fn main() { - println!( - "{:?}", - Solution::missing_integer(vec![14,9,6,9,7,9,10,4,9,9,4,4]) - ); + println!("{:?}", Solution::stone_game(vec![1,5,1])); }