659. Split Array into Consecutive Subsequences

在这里插入图片描述

这题还是很有意思的。

class Solution {
public:
    bool isPossible(vector<int>& nums) {
        unordered_map<int, int> dict, temp;//dict存储还没有分配的数字,temp存储已经ok的所有序列的下一个可添加的数字
        for (int num : nums)
            dict[num]++;
        for (int num : nums) {
            if (dict[num] == 0)
                continue;
            else if (temp[num] != 0) {
                dict[num]--;
                temp[num]--;
                temp[num+1]++;
            } else if (dict[num+1] > 0 && dict[num+2] > 0) {
                dict[num]--;
                dict[num+1]--;
                dict[num+2]--;
                temp[num+3]++;
            } else 
                return false;
        }
        return true;
    }
};

posted @ 2019-10-16 10:42  于老师的父亲王老爷子  阅读(10)  评论(0编辑  收藏  举报