LeetCode 1296. Divide Array in Sets of K Consecutive Numbers
考点 | 难度 |
---|---|
Greedy | Easy |
题目
Given an array of integers nums and a positive integer k, check whether it is possible to divide this array into sets of k consecutive numbers.
Return true if it is possible. Otherwise, return false.
思路
用map储存frequency,从map里的第一个element开始数k个,如果map里都有的话update frequency,移动到下一个element
答案
class Solution(object):
def isPossibleDivide(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: bool
"""
num_map = {}
for num in nums:
num_map[num] = num_map.get(num, 0) + 1
while num_map:
first = min(num_map)
for i in range(first, first+k):
if i not in num_map:
return False
num_map[i] -= 1
if num_map[i] == 0:
del num_map[i]
return True