提交 7d147adb 编写于 作者: 梦境迷离's avatar 梦境迷离

rust leetcode 665

上级 27787a4c
......@@ -1571,4 +1571,35 @@ impl Solution {
chars[chars.len() - 1].len() as i32
}
}
```
* 665 非递减数列
```rust
impl Solution {
pub fn check_possibility(nums: Vec<i32>) -> bool {
let mut nums = nums;
let mut cnt = 0;
if nums.len() < 2 {
return true;
}
//将局部调整为最优方案
//当 i 和 i+1 构成逆序时
for i in 0..nums.len() - 1 {
if nums[i] > nums[i + 1] {
if i == 0 || nums[i - 1] <= nums[i + 1] {
//如果 i-1 和 i+1 是升序排列,此时缩小 i 的值
nums[i] = nums[i + 1];
} else if nums[i - 1] > nums[i + 1] {
//如果 i-1 和 i+1 是降序排列,此时增大 i+1 的值
nums[i + 1] = nums[i];
} else {}
//计算需要改动的次数
cnt += 1;
if cnt > 1 {
return false;
}
}
}
true
}
}
```
\ No newline at end of file
......@@ -2089,6 +2089,42 @@ fn leetcode_58() {
println!("{}", ret);
}
///非递减数列
fn leetcode_665() {
println!("leetcode_665");
impl Solution {
pub fn check_possibility(nums: Vec<i32>) -> bool {
let mut nums = nums;
let mut cnt = 0;
if nums.len() < 2 {
return true;
}
//将局部调整为最优方案
//当 i 和 i+1 构成逆序时
for i in 0..nums.len() - 1 {
if nums[i] > nums[i + 1] {
if i == 0 || nums[i - 1] <= nums[i + 1] {
//如果 i-1 和 i+1 是升序排列,此时缩小 i 的值
nums[i] = nums[i + 1];
} else if nums[i - 1] > nums[i + 1] {
//如果 i-1 和 i+1 是降序排列,此时增大 i+1 的值
nums[i + 1] = nums[i];
} else {}
//计算需要改动的次数
cnt += 1;
if cnt > 1 {
return false;
}
}
}
true
}
}
let ret = Solution::check_possibility(vec![4, 2, 3]);
println!("{}", ret);
}
///所有方法调用
pub fn solutions() {
interview_58_2();
......@@ -2153,6 +2189,7 @@ pub fn solutions() {
leetcode_1207();
leetcode_38();
leetcode_58();
leetcode_665();
}
fn print_vec(nums: Vec<i32>) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册