class Solution(object):
def canDivideIntoSubsequences(self, nums, K):
"""
贪心算法,先找出长度K的所有递增序列,并将其保存起来 到result中
然后对于剩下的元素,将其逐个插入到result中的递增序列中,因为result
中的序列都是递增的,我们找到序列最后一个元素小于要插入元素的所有序列中末尾元素最大的那个进行插入
这样做事尽可能的缩小相邻两个元素之间的差距,给后面的元素留下最大插入空间
"""
result = []
while(True):
last_number = -float('inf')
cur_k = K
tmp = []
for i in range(len(nums)):
if nums[i] != -1 and nums[i] > last_number:
last_number = nums[i]
tmp.append(last_number)
nums[i] = -1
cur_k -=1
if cur_k == 0:
break
result.append(tmp)
if self.count_array(nums) < K:
break
for num in nums:
if num == -1:
continue
index = -1
for i in range(len(result)):
if result[i][-1] < num:
if index == -1:
index = i
else:
if result[i][-1] > result[index][-1]:
index = i
if index == -1:
return False
result[index].append(num)
return True
def count_array(self, array):
count = 0
for char in array:
if char != -1:
count += 1
return count
LC.1121. Divide Array Into Increasing Sequences
最新推荐文章于 2022-09-30 10:46:32 发布