diff --git a/src/problem/mod.rs b/src/problem/mod.rs index c689083..506474b 100644 --- a/src/problem/mod.rs +++ b/src/problem/mod.rs @@ -98,4 +98,5 @@ mod p80_remove_duplicates_from_sorted_array_ii; mod p169_majority_element; mod p189_rotate_array; mod p121_best_time_to_buy_and_sell_stock; -mod p122_best_time_to_buy_and_sell_stock_ii; \ No newline at end of file +mod p122_best_time_to_buy_and_sell_stock_ii; +mod p55_jump_game; \ No newline at end of file diff --git a/src/problem/p55_jump_game.rs b/src/problem/p55_jump_game.rs new file mode 100644 index 0000000..e4f2f0e --- /dev/null +++ b/src/problem/p55_jump_game.rs @@ -0,0 +1,39 @@ +/** + * [55] Jump Game + */ +pub struct Solution {} + +// submission codes start here + +impl Solution { + pub fn can_jump(nums: Vec) -> bool { + let mut max_reach = 0; + + for i in 0..nums.len() { + if i > max_reach { + return false; + } + + max_reach = max_reach.max(i + nums[i] as usize); + + if max_reach >= nums.len() - 1 { + return true; + } + } + + false + } +} + +// submission codes end + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_55() { + assert!(Solution::can_jump(vec![2, 3, 1, 1, 4])); + assert!(!Solution::can_jump(vec![3, 2, 1, 0, 4])); + } +}