力扣刷提記錄 陣列 簡單 665非遞減數列

2021-09-25 22:04:41 字數 1554 閱讀 8478

給定乙個長度為 n 的整數陣列,判斷在最多改變 1 個元素的情況下,該陣列能否變成乙個非遞減數列。

非遞減數列的: 對於陣列中所有的 i (1 <= i < n),滿足 array[i] <= array[i + 1]。

輸入: [4,2,3]

輸出: true

解釋: 你可以通過把第乙個4變成1來使得它成為乙個非遞減數列。

輸入: [4,2,1]

輸出: false

解釋: 你不能在只改變乙個元素的情況下將其變為非遞減數列。

用count來記錄調整元素的次數,若大於1則返回false,否則返回true

遍歷陣列,發現不滿足array[i] <= array[i + 1]則調整陣列元素

重點在於如何調整元素

[a,b,c]

非遞減的話應當a<=b<=c

用指標i指向三個數中的中間的數,即b,且i之前的元素都滿足順序,即a<=b

如果c>b,則需要調整元素:

c<=a,則目前順序為c<=a<=b,故需要調整c,調整c=b

c>a,則目前順序為a<=b,a

class

solution

(object)

: def checkpossibility

(self, nums)

:"""

:type nums: list[int]

:rtype: bool

"""length =

len(nums)

if length<=2:

return true

count =

0 # 用於記錄調整順序的次數

# 保證第一第二個元素滿足順序

if nums[0]

>nums[1]

: nums[0]

= nums[1]

count +=

1for i in

range(1

,length-1)

:

# i之前的都滿足順序

# 第i個和第i+

1個元素不滿足順序

if nums[i]

>nums[i+1]

: count +=

1if count >1:

return false

# 調整第i或第i+

1個元素,使它們滿足順序

# 第i個大於第i+

1個,第i+

1個小於第i-

1個,則第i+

1個小,不滿足順序

if nums[i+1]

<=nums[i-1]

: nums[i+1]

= nums[i]

# 第i個大於第i+

1個,第i+

1個大於第i-

1個,則第i個不滿足順序

else

: nums[i]

=[i+1]

return true

力扣刷題記錄 陣列 簡單 896單調數列

如果陣列是單調遞增或單調遞減的,那麼它是單調的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞增的。如果對於所有 i j,a i a j 那麼陣列 a 是單調遞減的。當給定的陣列 a 是單調陣列時返回 true,否則返回 false。class solution object def ...

力扣刷題記錄 陣列 簡單 1 167兩數之和

給定乙個整數陣列 nums 和乙個目標值 target,在該陣列中找出和為目標值的那兩個整數,並返回它們的陣列下標。假設每種輸入只會對應乙個答案,但是不能重複利用這個陣列中同樣的元素。給定 nums 2,7,11,15 target 9 因為 nums 0 nums 1 2 7 9,所以返回 0,1...

力扣刷題記錄 陣列 簡單 605種花問題

給定乙個由0和1組成的陣列表示花壇,其中0表示沒種花,1表示植了花。要再向花壇中種n朵花,要求 相鄰花壇不能同時種花。能否在不打破種植規則的情況下種入 n 朵花。錯誤解答 class solution object def canplaceflowers self,flowerbed,n type ...