给你一个 非递减 的正整数数组 nums
和整数 K
,判断该数组是否可以被分成一个或几个 长度至少 为 K
的 不相交的递增子序列。
示例 1:
输入:nums = [1,2,2,3,3,4,4], K = 3
输出:true
解释:
该数组可以分成两个子序列 [1,2,3,4] 和 [2,3,4],每个子序列的长度都至少是 3。
示例 2:
输入:nums = [5,6,6,7,8], K = 3
输出:false
解释:
没有办法根据条件来划分数组。
提示:
1 <= nums.length <= 10^5
1 <= K <= nums.length
1 <= nums[i] <= 10^5
思路:
观察排行榜发现10分钟就有人能AC, 20分钟就有20个AC,说明难度较低,可以一试,
先找到nums里出现频率最多的元素出现的次数 maxx,
按照题目要求,分出来的子序列必须严格递增,也就必须要分割出 maxx个子序列,
因此nums里的元素个数必须 大于等于 maxx * k。
class Solution(object):
def canDivideIntoSubsequences(self, nums, K):
"""
:type nums: List[int]
:type K: int
:rtype: bool
"""
from collections import Counter
dic = Counter(nums)
max_frequency = max(dic.values())
return max_frequency * K <= len(nums)