mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-09 19:44:45 +08:00
Merge pull request #1928 from fwqaaq/patch-8
Update 0376.摆动序列.md about rust
This commit is contained in:
@ -462,21 +462,43 @@ var wiggleMaxLength = function(nums) {
|
||||
```Rust
|
||||
impl Solution {
|
||||
pub fn wiggle_max_length(nums: Vec<i32>) -> i32 {
|
||||
let len = nums.len() as usize;
|
||||
if len <= 1 {
|
||||
return len as i32;
|
||||
if nums.len() == 1 {
|
||||
return 1;
|
||||
}
|
||||
let mut preDiff = 0;
|
||||
let mut curDiff = 0;
|
||||
let mut result = 1;
|
||||
for i in 0..len-1 {
|
||||
curDiff = nums[i+1] - nums[i];
|
||||
if (preDiff <= 0 && curDiff > 0) || (preDiff >= 0 && curDiff < 0) {
|
||||
result += 1;
|
||||
preDiff = curDiff;
|
||||
let mut res = 1;
|
||||
let mut pre_diff = 0;
|
||||
for i in 0..nums.len() - 1 {
|
||||
let cur_diff = nums[i + 1] - nums[i];
|
||||
if (pre_diff <= 0 && cur_diff > 0) || (pre_diff >= 0 && cur_diff < 0) {
|
||||
res += 1;
|
||||
pre_diff = cur_diff;
|
||||
}
|
||||
}
|
||||
result
|
||||
res
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**动态规划**
|
||||
|
||||
```rust
|
||||
impl Solution {
|
||||
pub fn wiggle_max_length(nums: Vec<i32>) -> i32 {
|
||||
if nums.len() == 1 {
|
||||
return 1;
|
||||
}
|
||||
let (mut down, mut up) = (1, 1);
|
||||
for i in 1..nums.len() {
|
||||
// i - 1 为峰顶
|
||||
if nums[i] < nums[i - 1] {
|
||||
down = down.max(up + 1);
|
||||
}
|
||||
// i - 1 为峰谷
|
||||
if nums[i] > nums[i - 1] {
|
||||
up = up.max(down + 1);
|
||||
}
|
||||
}
|
||||
down.max(up)
|
||||
}
|
||||
}
|
||||
```
|
||||
|
Reference in New Issue
Block a user