[力扣] 算法 1296 (C#)

1296. 划分数组为连续数字的集合

public class Solution
{
    public bool IsPossibleDivide(int[] nums, int k)
    {
        if (k > 1)
        {
            var map = new SortedDictionary<int, int>();
            foreach (var num in nums)
                if (map.ContainsKey(num))
                    map[num]++;
                else
                    map[num] = 1;
            while(map.Count > 0)
            {
                var (key,value) = map.First();
                for(var i = 0; i < k; i++)
                {
                    if (!map.ContainsKey(key + i) || (map[key + i] -= value) < 0)
                        return false;
                    if (map[key + i] == 0)
                        map.Remove(key + i);
                }
            }
        }
        return true;
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据