↓快轉到主要內容
  1. LeetCode/

LeetCode 896: Monotonic Array

·1 分鐘· ·
LeetCode Easy Array
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-09-24

  • 提交紀錄:Wrong Answer ×3 → Accepted ×3

解題思路
#

單調有兩種方向,而且是非嚴格的(相等可以)。掃一次,分別記錄「有沒有出現上升」和「有沒有出現下降」,兩者不能同時出現(Array 模板一)。

我的嘗試
#

前兩版各自只檢查一個方向:只允許非遞增時 [0, 3] 回傳 False,只允許非遞減時 [1, 0] 回傳 False。第三版兩個方向都檢查了,但用了嚴格的 <、>:[0, 0] 回傳 False。改成 <=、>= 就 AC 了。

正確解法
#

class Solution:
    def isMonotonic(self, nums: List[int]) -> bool:
        up = down = False
        for i in range(1, len(nums)):
            if nums[i] > nums[i - 1]:
                up = True
            elif nums[i] < nums[i - 1]:
                down = True
        return not (up and down)

複雜度
#

時間 O(n),空間 O(1)。

要特別避免的錯誤
#

  • 兩個方向都要考慮。
  • 用 <=、>=,相等的相鄰元素不會破壞單調。

面試口說整理
#

我掃一次,記錄有沒有出現上升和有沒有出現下降,只要兩種沒有同時出現就是單調的,相等的元素不影響。時間 O(n)、空間 O(1)。

相關文章

LeetCode 892: Surface Area of 3D Shapes
·1 分鐘
LeetCode Easy Array Math Geometry Matrix
LeetCode 892 解題筆記:每疊 v 個方塊有 4v + 2 個面,再扣掉跟上方和左方相鄰的疊重疊的 2 × min 面
LeetCode 883: Projection Area of 3D Shapes
·1 分鐘
LeetCode Easy Array Math Geometry Matrix
LeetCode 883 解題筆記:俯視是非 0 的格子數,正視和側視分別是每一列、每一欄的最大值總和
LeetCode 888: Fair Candy Swap
·1 分鐘
LeetCode Easy Array Hash-Table Binary-Search Sorting
LeetCode 888 解題筆記:交換 x 和 y 後總和相等,代表 y = x + (sumB - sumA) / 2;把 B 放進集合,逐一檢查 A 的 x
LeetCode 860: Lemonade Change
·2 分鐘
LeetCode Easy Array Greedy
LeetCode 860 解題筆記:只記 5 元和 10 元的張數;找 15 元時優先用 10 + 5,因為 5 元比較萬用
LeetCode 867: Transpose Matrix
·1 分鐘
LeetCode Easy Array Matrix Simulation
LeetCode 867 解題筆記:轉置後的大小是 n × m,res[j][i] = matrix[i][j];Python 可以用 zip(*matrix)
LeetCode 821: Shortest Distance to a Character
·1 分鐘
LeetCode Easy Array Two-Pointers String
LeetCode 821 解題筆記:左往右掃一次記錄到左邊最近的 c 的距離,右往左再掃一次取較小值