假设我们有一个非递减的正整数数组,称为nums和整数K,我们必须找出该数组是否可以划分为一个或多个长度不小于K的不相交的递增子序列。
因此,如果输入像nums = [1,2,2,3,3,4,4],K = 3,那么输出将为true,因为此数组可以分为两个子序列,例如[1, 2,3,4]和[2,3,4]各自的长度至少为3。
为了解决这个问题,我们将遵循以下步骤-
d:=新映射
要求:= 0
对于每个以数字表示的i
d [i]:= d [i] + 1
d [i]:= 1
如果我不在d中为非零,则
除此以外,
req:= req的最大值,d [i]
当req * K <= nums的大小时返回true
让我们看下面的实现以更好地理解-
class Solution(object):
def canDivideIntoSubsequences(self, nums, K):
d = {}
req = 0
for i in nums:
if i not in d:
d[i]=1
else:
d[i]+=1
req = max(req,d[i])
return req*K<=len(nums)
ob = Solution()print(ob.canDivideIntoSubsequences([1,2,2,3,3,4,4],3))[1,2,2,3,3,4,4]. 3
输出结果
True