項目場景:
給你一個整數數組?nums
?和一個整數?k
?。你可以將?nums
?劃分成一個或多個?子序列?,使?nums
?中的每個元素都?恰好?出現在一個子序列中。
在滿足每個子序列中最大值和最小值之間的差值最多為?k
?的前提下,返回需要劃分的?最少?子序列數目。
子序列?本質是一個序列,可以通過刪除另一個序列中的某些元素(或者不刪除)但不改變剩下元素的順序得到。
提示:
1 <= nums.length <= 105
0 <= nums[i] <= 105
0 <= k <= 105
問題描述
? ? ? ? 根據題意,這題要保證子序列的最大值和最小值的最大差值為K,那子序列中元素順序對結果不會有影響,為了方便,我們對數組進行排序。對排序后的數組進行遍歷,如果x-mn>k說明此時序列的最大值-最小值>k了,不滿足要求,需要將此時的x放到新的子序列里,ans加1。因為num是經過排序的,則此時新序列的最小值mn被設置為x,之后持續循環即可。
class Solution:def partitionArray(self, nums: List[int], k: int) -> int:nums.sort()##數組排序ans=0mn=-inf##初始值設為無窮小for x in nums:if x-mn>k:ans+=1##子序列數量加1mn=xreturn ans
????????以上為本篇文章的全部內容,感謝你抽出寶貴的時間閱讀這篇文章。如果你有任何疑問或建議,歡迎在評論區留言,我們一起交流進步。愿你的代碼之路越走越順,生活充滿陽光!??????