665. 非递减数列  https://leetcode-cn.com/problems/non-decreasing-array/

给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]

class Solution {
public boolean checkPossibility(int[] nums) { int len_num = nums.length;
if (len_num == 1) {
return true;
}
boolean[] low = new boolean[len_num];
boolean[] up = new boolean[len_num];
Arrays.fill(low, true);
Arrays.fill(up, true);
for (int i = 0; i < len_num; i++) {
if (i > 0) {
if (nums[i] >= nums[i - 1] && low[i - 1]) {
low[i] = true;
} else {
low[i] = false;
} }
if (i < len_num - 1) {
if (nums[len_num - i - 2] <= nums[len_num - i - 1] && up[len_num - i - 1]) {
up[len_num - i - 2] = true;
}
else {
up[len_num - i - 2] = false;
}
}
} for (int i = 0; i < len_num; i++) {
if (i == 0) {
if (up[i + 1]) {
return true; }
} else if (i == len_num - 1) {
if (low[i - 1]) {
return true;
} } else {
if (low[i - 1] && up[i + 1] && nums[i - 1] <= nums[i + 1]) {
return true;
}
} } return false; }
}

  根据题目的描述,我们定义了一个一个异常点的特征,这个点的右侧是递增,左侧是递增,而且右侧的数大于等于左侧的数,如果这个点让数组不递增,那么这个点就是一个异常点。本题就是需要寻找出所有的异常点,看看异常点的个数是否大于1.

在计算一个点左右侧是否递增的时候,可以把中间过程保存下来,减少计算次数。

ARTS打卡计划第二周-Algorithm的更多相关文章

  1. ARTS打卡计划第二周-Review

    本周review的文章是:https://medium.com/@hakibenita/optimizing-django-admin-paginator-53c4eb6bfca3 改篇文章的题目是: ...

  2. ARTS打卡计划第二周

    Algorithms: https://leetcode-cn.com/problems/3sum/ 算法是先排序,然后按照两个数和两边逼中,考虑去重. Review: https://www.inf ...

  3. ARTS打卡计划第二周-Share-使用java注解对方法计时

    现在有这样一种常见,系统中有一个接口,该接口执行的方法忽快忽慢,因此你需要去统计改方法的执行时间.刚开始你的代码可能如下: long start = System.currentTimeMillis( ...

  4. ARTS打卡计划第二周-Tips-mysql-binlog-connector-java的使用

    最近发现一个挺不错的框架mysql-binlog-connector-java,可以实时监控binlog的变化. 首先检查mysql的binlog是否开启,在开启的情况下: 引入依赖 <depe ...

  5. ARTS打卡计划第一周-Algorithm

    7. Reverse Integer import math class Solution: def reverse(self, x: int) -> int: ret = 0 if x > ...

  6. ARTS打卡计划第一周-Share-系统字典模块的设计

    在软件开发的过程,经常有一些类型的字段信息:性别.学历.职级.车辆类别.公司类型.结算类型等.这些字段有2个特征:1是字段可选的类型是有限,2是字段可能会变化,我们把这种字段描述为字段字段.  本篇文 ...

  7. ARTS打卡计划第一周-Tips-ControllerAdvice的使用

    通常在开发具体项目过程中我们可能会面临如下问题: 统一所有的json返回结果 统一处理所有controller中的异常,并且给不同异常不同的返回状态值 统一对返回的接口做数据校验或者加密,防止篡改 在 ...

  8. ARTS打卡计划第一周-Review

    本周分享的文章来自于medium的 Testing Best Practices for Java + Spring Apps 这个文章主要讲的是java测试的一些最佳实践 1.避免函数返回void, ...

  9. ARTS打卡计划第九周

    Algorithms: https://leetcode-cn.com/problems/merge-two-sorted-lists/submissions/ 合并两个链表 Review:  “Pu ...

随机推荐

  1. Java ConcurrentHashMap存入引用对象时也是线程安全的

    本人小白,看到资料说ConcurrentHashMap是线程安全的,get过程不需要加锁,put是线程安全的,推荐高并发时使用.但是本人不清楚是否该map中存入的引用类型对象,对象属性变化也是否线程安 ...

  2. ArcEngine 调用GP里面的Merge工具

    这两天,为ArcEngine中的Merge工具的调试伤头脑筋,明明很简单的事情,就是搞不掂儿.今天忽然想到是否是中文的关系,果然,把中文修改成英文成功了.真是快郁闷死了! public static ...

  3. 将centos的yum源修改为阿里云的yum源

    CentOS系统更换软件安装源 第一步:备份你的原镜像文件,以免出错后可以恢复. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentO ...

  4. mpt2sas0: log_info(0x31120100): originator(PL), code(0x12), sub_code(0x0100)及同类问题的追踪

    做存储或者磁盘阵列的经常会遇到linux kernel打印如下信息或者类似的信息,这是什么原因导致的呢? mpt2sas0: log_info(0x31120100): originator(PL), ...

  5. python 画图工具matplotlib 去掉坐标轴和坐标的方法

    1. 去掉坐标轴的方法: plt.axis('off') 2.去掉刻度的方法: plt.xticks([]) plt.yticks([]) 以上语句需要将其置于 plt.show() 之前,plt.i ...

  6. Azure CosmosDB (12) 创建Cosmos DB并执行查询语句

    <Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...

  7. 用crontab部署定时任务

    1.(centos)安装crontab服务 yum install crontabs 2.启动.停止.重启.重载服务 /sbin/service crond start /sbin/service c ...

  8. python 函数内使用自己的函数名

    def p(): import sys print sys._getframe(1).f_code.co_name def f(): p() def f1(): p() if __name__ == ...

  9. C#后台接java接口传输字节数组(byte[])

    事情是这样的C#t代码之前接的WCF接口,后来那边统一改为java的接口,我是用的HttpClient从后台发请求调用的java接口,其他接口都很顺利,是的....知道遇到一个需要传byte[]类型数 ...

  10. udev磁盘绑定

    udev磁盘绑定 [grid@db-rac02 ~]$ cat 99-asm-multipath.rules KERNEL=="sd*",SUBSYSTEM=="bloc ...