877. 石子游戏

This commit is contained in:
2026-08-13 10:28:19 +08:00
parent ece3af5149
commit 50fba25511
+21 -14
View File
@@ -3,24 +3,31 @@ use std::collections::HashSet;
mod arr;
struct Solution {}
impl Solution {
pub fn missing_integer(nums: Vec<i32>) -> i32 {
let mut st = nums.clone().into_iter().collect::<HashSet<i32>>();
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<i32>) -> 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]]
};
}
sum += nums[i];
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]]
};
}
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]));
}