我是靠谱客的博主 顺心汽车,最近开发中收集的这篇文章主要介绍Python-is Monotonic-数组-检验数组是否单调Solution 1:Solution 2:,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求: 检验一个数组是否是单调的

输入:

[-1, -5, -10, -1100, -900, -1101, -1102, -9001]

输出:

False

Solution 1:

先确定一个方向,然后遍历这个数组,看看是否破坏之前的方向。

def isMonotonic(array):

    up_down = 0;
    if len(array)<=2:
      return True

    direction = array[1]-array[0]
    for _ in range(2,len(array)):
      if direction == 0:
        #update direction
        direction = array[_]-array[_-1]
        continue
      if if_break(direction,current = array[_],previous = array[_-1]):
        return False
    return True

def if_break(direction,previous,current):
  if (current-previous)*direction < 0:
    return True
  else:
    return False



test_arr = [-1, -5, -10, -1100, -900, -1101, -1102, -9001]


print(isMonotonic(array = test_arr))

Time: O(n) Space: O(1)

Solution 2:

更简单的方法,假设不增不减是成立的,看是否有情况破坏这个条件。

不增不减意味着单调。

不增 是 单调

不减 是 单调

如果同时不满足这两个条件,那么就不是单调。

def isMonotonic(array):
    # 假设不增不减,看是否有情况破坏这个条件
    isNotIncreasing = True
    isNotDecreasing = True
    for _ in range(1,len(array)):
      if array[_]>array[_-1]:
        isNotIncreasing = False
      if array[_]<array[_-1]:
        isNotDecreasing = False
    return isNotDecreasing or isNotIncreasing



test_arr = [-1, -5, -10, -1100, -900, -1101, -1102, -9001]


print(isMonotonic(array = test_arr))

Time: O(n) Space: O(1)

最后

以上就是顺心汽车为你收集整理的Python-is Monotonic-数组-检验数组是否单调Solution 1:Solution 2:的全部内容,希望文章能够帮你解决Python-is Monotonic-数组-检验数组是否单调Solution 1:Solution 2:所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部