LeetCode简单题之删除一个元素使数组严格递增
題目
給你一個(gè)下標(biāo)從 0 開始的整數(shù)數(shù)組 nums ,如果 恰好 刪除 一個(gè) 元素后,數(shù)組 嚴(yán)格遞增 ,那么請(qǐng)你返回 true ,否則返回 false 。如果數(shù)組本身已經(jīng)是嚴(yán)格遞增的,請(qǐng)你也返回 true 。
數(shù)組 nums 是 嚴(yán)格遞增 的定義為:對(duì)于任意下標(biāo)的 1 <= i < nums.length 都滿足 nums[i - 1] < nums[i] 。
示例 1:
輸入:nums = [1,2,10,5,7]
輸出:true
解釋:從 nums 中刪除下標(biāo) 2 處的 10 ,得到 [1,2,5,7] 。
[1,2,5,7] 是嚴(yán)格遞增的,所以返回 true 。
示例 2:
輸入:nums = [2,3,1,2]
輸出:false
解釋:
[3,1,2] 是刪除下標(biāo) 0 處元素后得到的結(jié)果。
[2,1,2] 是刪除下標(biāo) 1 處元素后得到的結(jié)果。
[2,3,2] 是刪除下標(biāo) 2 處元素后得到的結(jié)果。
[2,3,1] 是刪除下標(biāo) 3 處元素后得到的結(jié)果。
沒有任何結(jié)果數(shù)組是嚴(yán)格遞增的,所以返回 false 。
示例 3:
輸入:nums = [1,1,1]
輸出:false
解釋:刪除任意元素后的結(jié)果都是 [1,1] 。
[1,1] 不是嚴(yán)格遞增的,所以返回 false 。
示例 4:
輸入:nums = [1,2,3]
輸出:true
解釋:[1,2,3] 已經(jīng)是嚴(yán)格遞增的,所以返回 true 。
提示:
2 <= nums.length <= 1000
1 <= nums[i] <= 1000
來源:力扣(LeetCode)
解題思路
??一個(gè)簡(jiǎn)單的方向就是先遍歷數(shù)組,找到數(shù)組中元素不符合嚴(yán)格遞增的點(diǎn),然后通過分析情況修改數(shù)組,當(dāng)然只能進(jìn)行一次刪除操作,最后再來一輪判斷。
class Solution:def canBeIncreasing(self, nums: List[int]) -> bool:i=1n=len(nums)while i<len(nums):if nums[i]>nums[i-1]:i+=1else: #如果當(dāng)前點(diǎn)使得數(shù)組不是嚴(yán)格單增if i-2>=0: #檢查當(dāng)前元素前面的第二個(gè)點(diǎn)if nums[i]>nums[i-2]: #如果當(dāng)前點(diǎn)和前面第二個(gè)點(diǎn)構(gòu)成嚴(yán)格遞增,則刪除當(dāng)前元素前面第一個(gè)點(diǎn)del nums[i-1]else: #否則刪除當(dāng)前元素del nums[i]else: #如果前面只有一個(gè)元素,那么刪除當(dāng)前點(diǎn)即可del nums[i-1]breakif n==len(nums): #沒有發(fā)生刪除,原數(shù)組嚴(yán)格單增return Truefor i in range(1,len(nums)): #進(jìn)行一次刪除操作后是否是嚴(yán)格單增if nums[i]<=nums[i-1]:return Falsereturn True
總結(jié)
以上是生活随笔為你收集整理的LeetCode简单题之删除一个元素使数组严格递增的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之找到最近的有相同
- 下一篇: LeetCode简单题之拆炸弹