From 50fba255116e06615b1a878e2889ce934be59c66 Mon Sep 17 00:00:00 2001 From: li-chx Date: Wed, 12 Aug 2026 14:04:00 +0800 Subject: [PATCH] =?UTF-8?q?877.=20=E7=9F=B3=E5=AD=90=E6=B8=B8=E6=88=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.rs | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) 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])); }