diff --git a/problems/0045.跳跃游戏II.md b/problems/0045.跳跃游戏II.md index 648355fd..13142c99 100644 --- a/problems/0045.跳跃游戏II.md +++ b/problems/0045.跳跃游戏II.md @@ -305,6 +305,56 @@ object Solution { } ``` +### Rust + +```Rust +//版本一 +impl Solution { + fn max(a: i32, b:i32) -> i32 { + if a > b { a } else { b } + } + pub fn jump(nums: Vec) -> i32 { + if nums.len() == 0 { return 0; } + let mut cur_distance: i32 = 0; + let mut ans: i32 = 0; + let mut next_distance: i32 = 0; + for i in 0..nums.len() { + next_distance = Self::max(nums[i] + i as i32, next_distance); + if i as i32 == cur_distance { + if cur_distance != (nums.len() - 1) as i32 { + ans += 1; + cur_distance = next_distance; + if next_distance == (nums.len() - 1) as i32 { break; } + } + else { break; } + } + } + ans + } +} +``` + +```Rust +//版本二 +impl Solution { + fn max(a: i32, b:i32) -> i32 { + if a > b { a } else { b } + } + pub fn jump(nums: Vec) -> i32 { + let mut cur_distance: i32 = 0; + let mut ans: i32 = 0; + let mut next_distance: i32 = 0; + for i in 0..nums.len() - 1 { + next_distance = Self::max(nums[i] + i as i32, next_distance); + if i as i32 == cur_distance { + cur_distance = next_distance; + ans += 1; + } + } + ans + } +} +``` -----------------------