877. 石子游戏
This commit is contained in:
+21
-14
@@ -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]));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user