leetcode刷题02:896. 单调数列

in hive-180932 •  5 months ago 

题目:

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

如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[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

这题我的思路很简单,一开始先判断升序还是降序。我用比较数组第一个、第二个以及最后一个的大小,来判断升序还是降序。

然后比对下一个的大小,如果单调数列被破坏,就输出Flase。

代码如下:

class Solution:
    def isMonotonic(self, A: List[int]) -> bool:
        re=True
        try:
            if A[0]-A[1] <= 0 and A[0] < A[-1]:
                for i in range(len(A)-1):
                    if A[i]-A[i+1]>0:
                        re = False
                        break
            else:
                for i in range(len(A)-1):
                    if A[i]-A[i+1]<0:
                        re = False
                        break
        except:
            pass
        return re

image.png

成绩一般般,后来想想,可以直接先把数组排序,然后比对是否相同,不相同就是Flase,这样就简单多了。

代码如下:

class Solution:
    def isMonotonic(self, A: List[int]) -> bool:
        if len(A) == 1:
            return True
        else:
            re=False
            B=sorted(A)
            if A == B or A == list(reversed(B)):
                re=True
        return re

image.png

速度更慢了……虽然代码好看了一点儿

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

雖然看不懂也要拍拍

拍拍