665. Non-decreasing Array - LeetCode
2024-09-26 23:00:06
Question
Solution
题目大意:
思路:当前判断2的时候可以将当前元素2变为4,也可以将上一个元素4变为2,再判断两变化后是否满足要求。
Java实现:
public boolean checkPossibility(int[] nums) {
if (nums == null || nums.length < 3) return true;
int count = 0;
// 判断前2个
if (nums[1] < nums[0]) {
nums[0] = nums[1] - 1;
count++;
}
for (int i = 2; i < nums.length; i++) {
if (nums[i] < nums[i - 1]) {
count++;
if (nums[i - 2] <= nums[i] - 1) {
nums[i - 1] = nums[i] - 1;
} else if (i == nums.length -1 || nums[i + 1] >= nums[i - 1] + 1) {
nums[i] = nums[i - 1] + 1;
} else {
return false;
}
}
}
return count < 2;
}
别人实现:
public boolean checkPossibility(int[] nums) {
int cnt = 0; //the number of changes
for(int i = 1; i < nums.length && cnt<=1 ; i++){
if(nums[i-1] > nums[i]){
cnt++;
//modify nums[i-1] of a priority
if(i-2<0 || nums[i-2] <= nums[i])nums[i-1] = nums[i];
else nums[i] = nums[i-1]; //have to modify nums[i]
}
}
return cnt<=1;
}
最新文章
- 响应式web设计总结
- 再探@font-face及webIcon制作
- BZOJ2730——[HNOI2012]矿场搭建
- 原生JS实现瀑布流
- 常用颜色的RGB值
- $parse/$eval和$observe/$watch如何区分
- Android PagerAdapter
- sdk manager更新失败,显示Download interrupted: read timed out,应该如何解决?
- java使用注解和反射打造一个简单的jdbc工具类
- ubuntu 下修改文件访问权限chmod 777 -R *血的教训!没事别乱开权限!用谁开谁的就行。。。最后不要用这个命令,文件操作全部改用终端
- Linux发行版 CentOS6.5下删除分区操作
- HTML,文字两端对齐
- 文件中间修改内容遇到OSEerror
- Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
- hadoop中 bin/hadoop fs -ls ls: `.&#39;: No such file or directory问题
- MySQL_插入更新 ON DUPLICATE KEY UPDATE
- Geohash距离估算
- Android之网络摄像头
- BitAdminCore框架更新日志20180519
- bms_output.put_line使用方法