📜  检查给定的数组是否是单调的(1)

📅  最后修改于: 2023-12-03 15:40:36.534000             🧑  作者: Mango

检查给定的数组是否是单调的

在编写代码时,有时面对的问题是判断一个给定的数组是否是单调的,也就是判断数组是否严格递增或递减。

解决方法

一种简单的解决方法是分别判断数组中相邻元素的大小关系。如果数组是递增的,那么相邻元素之间的差值应该是正数;如果数组是递减的,那么相邻元素之间的差值应该是负数。

下面是一个示例代码片段,用于检查一个给定数组是否是单调的:

def is_monotonic(array):
    increasing = decreasing = True
    for i in range(len(array) - 1):
        if array[i] > array[i + 1]:
            increasing = False
        if array[i] < array[i + 1]:
            decreasing = False
    return increasing or decreasing

代码的核心思路是定义两个变量 increasingdecreasing,它们分别表示数组是否递增和递减。在遍历数组时,如果发现相邻元素的大小关系不符合递增或递减的条件,就将相应的变量设置为 False,最终通过逻辑运算符 or 判断数组是否是单调的。

注意事项

需要注意的是,当数组中相邻元素相等时,这个算法会将数组判断为既递增又递减,因为在这种情况下数组并不是严格单调的。如果需要严格判断是否为单调,可以修改代码如下:

def is_monotonic(array):
    increasing = decreasing = True
    for i in range(len(array) - 1):
        if array[i] > array[i + 1]:
            increasing = False
            break
    for i in range(len(array) - 1):
        if array[i] < array[i + 1]:
            decreasing = False
            break
    return increasing or decreasing

改动后的代码增加了 break 语句,一旦发现违反单调性质,就停止执行后续的循环,以提高算法的效率。

总结

在编写代码时,需要根据实际情况选择不同的方法来判断一个给定的数组是否是单调的。上述方法可以在大多数情况下解决问题,但对于特殊情况,需要根据实际需求进行改动。