• 领扣(LeetCode)单调数列 个人题解


    如果数组是单调递增或单调递减的,那么它是单调的

    如果对于所有 i <= jA[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= jA[i]> = A[j],那么数组 A 是单调递减的。

    当给定的数组 A 是单调数组时返回 true,否则返回 false

    示例 1:

    输入:[1,2,2,3]
    输出:true
    

    示例 2:

    输入:[6,5,4,4]
    输出:true
    

    示例 3:

    输入:[1,3,2]
    输出:false
    

    示例 4:

    输入:[1,2,4,5]
    输出:true
    

    示例 5:

    输入:[1,1,1]
    输出:true
    

    提示:

    1. 1 <= A.length <= 50000
    2. -100000 <= A[i] <= 100000

    拿到这个题,首先的想法 是判断是哪种单调方式,然后接下来的数字如果不符合这个单调模式,则输出错误。但是实现起来有些麻烦。

    然后简化办法,设立两个标志,如果出现了单调递增,则绝不可能是单调递减,则把递减的标志设为假,反之亦然。最后输出两个结果相并的结果,就是答案。

    在这之间期间走了弯路,使用了排序,然后再让原本的数组和排序后的升序降序分别比较,如果不一致则输出错误,导致运行时间变慢许多。

    代码如下:

     1 class Solution {
     2     public boolean isMonotonic(int[] A) {
     3         int[] tmp = A.clone();
     4         boolean mark1 = true;
     5         boolean mark2 = true;
     6         for (int i = 0; i < A.length-1; i++) {
     7             if (A[i] > A[i+1])
     8                 mark1=false;
     9             else if (A[i] < A[i+1])
    10                 mark2 = false;
    11 
    12         }
    13 
    14         return mark1 | mark2;
    15     }
    16 }
  • 相关阅读:
    hdu3746 KMP的next数组应用,求项链首尾项链循环
    hdu4067 费用流(混合欧拉的宽展和延伸)
    hdu4067 费用流(混合欧拉的宽展和延伸)
    hdu1501 记忆化搜索
    hdu1501 记忆化搜索
    hdu1316 大数
    hdu1316 大数
    hdu4411 经典费用里建图
    hdu4411 经典费用里建图
    hdu4768 非常规的二分
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10003720.html
Copyright © 2020-2023  润新知