您的位置:首页 > 产品设计 > UI/UE

leetcode659 Split Array into Consecutive Subsequences

2017-08-21 19:08 615 查看
思路:

对于每个数,尽量放在已有子序列的后面;如果不能,就创建一个新的子序列。

实现:

1 class Solution
2 {
3 public:
4     bool isPossible(vector<int>& nums)
5     {
6         unordered_map<int, int> cnt, end;
7         for (auto i : nums) cnt[i]++;
8         for (auto i : nums)
9         {
10             if (cnt[i] == 0) continue;
11             else if (end[i - 1] > 0)
12             {
13                 end[i - 1]--;
14                 end[i]++;
15             }
16             else if (cnt[i + 1] > 0 && cnt[i + 2] > 0)
17             {
18                 cnt[i + 1]--;
19                 cnt[i + 2]--;
20                 end[i + 2]++;
21             }
22             else return false;
23             cnt[i]--;
24         }
25         return true;
26     }
27 };
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: