C#LeetCode刷题之#896-单调数列(Monotonic Array)

C#LeetCode刷题之#896-单调数列(Monotonic Array)

问题

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

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

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

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

输出:true

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

输出:true

输入:[1,3,2]

输出:false

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

输出:true

输入:[1,1,1]

输出:true

提示:

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

An array is monotonic if it is either monotone increasing or monotone decreasing.

An array A is monotone increasing if for all i <= j, A[i] <= A[j].  An array A is monotone decreasing if for all i <= j, A[i] >= A[j].

Return true if and only if the given array A is monotonic.

Input: [1,2,2,3]

Output: true

Input: [6,5,4,4]

Output: true

Input: [1,3,2]

Output: false

Input: [1,2,4,5]

Output: true

Input: [1,1,1]

Output: true

Note:

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

示例

public class Program {

    public static void Main(string[] args) {
        int[] nums = { 1, 2, 5 };

        var res = IsMonotonic(nums);
        Console.WriteLine(res);

        Console.ReadKey();
    }

    private static bool IsMonotonic(int[] A) {
        return isMonotonicIncrease(A) || isMonotonicReduce(A);
    }

    private static bool isMonotonicIncrease(int[] A) {
        for(var i = 0; i < A.Length - 1; i++) {
            if(A[i + 1] < A[i]) {
                return false;
            }
        }
        return true;
    }

    private static bool isMonotonicReduce(int[] A) {
        for(var i = 0; i < A.Length - 1; i++) {
            if(A[i + 1] > A[i]) {
                return false;
            }
        }
        return true;
    }

}

以上给出1种算法实现,以下是这个案例的输出结果:

True

分析:

显而易见,以上算法的时间复杂度为: O(n)

本文由 .Net中文网 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:https://www.byteflying.com/archives/3760

发表评论

登录后才能评论