659. Split Array into Consecutive Subsequences
来源:互联网 发布:阿里云域名实名认证 编辑:程序博客网 时间:2024/05/21 17:03
You are given an integer array sorted in ascending order (may contain duplicates), you need to split them into several subsequences, where each subsequences consist of at least 3 consecutive integers. Return whether you can make such a split.
Example 1:
Input: [1,2,3,3,4,5]Output: TrueExplanation:You can split them into two consecutive subsequences : 1, 2, 33, 4, 5
Example 2:
Input: [1,2,3,3,4,4,5,5]Output: TrueExplanation:You can split them into two consecutive subsequences : 1, 2, 3, 4, 53, 4, 5
Example 3:
Input: [1,2,3,4,4,5]Output: False
Note:
- The length of the input is in range of [1, 10000]
分析
维护若干个队列,新插入的元素必须等于队尾元素+1。若找不到这样的队列,新创建一个队列,把 新元素放入。待所有元素都放入后,看是否所有队列的长度都不小于3.
code
#include <iostream>#include <vector>using namespace std;class Solution {public: bool isPossible(vector<int>& nums) { vector<vector<int> > v; v.push_back(vector<int>()); v[0].push_back(nums[0]); for (int i = 1; i < nums.size(); ++i) { int flag=0; for (int j = v.size()-1; j >= 0; --j) { if (nums[i]==v[j].back()+1) { v[j].push_back(nums[i]); flag=1; break; } } if (flag==0) { v.push_back(vector<int>()); v.back().push_back(nums[i]); } } for (int i = 0; i < v.size(); ++i) if (v[i].size() < 3) return false; return true; }};int main(int argc, char const *argv[]){int a[]={1,2,3,3,4,5};vector<int> nums(a,a+6);Solution s;cout << s.isPossible(nums);return 0;}
阅读全文
0 0
- 659. Split Array into Consecutive Subsequences
- leetcode 659. Split Array into Consecutive Subsequences
- 659. Split Array into Consecutive Subsequences
- 659. Split Array into Consecutive Subsequences
- leetcode 659. Split Array into Consecutive Subsequences
- Split Array into Consecutive Subsequences
- 659. Split Array into Consecutive Subsequences 堆、优先级队列、哈希表
- leetcode 659. Split Array into Consecutive Subsequences 分割连续序列
- LeetCode #659 Split Array into Consecutive Subsequences
- Split Array into Consecutive Subsequences 解法
- Leetcode659——Split Array into Consecutive Subsequences
- LeetCode[659]Split Array into Consecutive Subsequences(Java)
- Split Array into Consecutive Subsequences问题及解法
- 算法作业系列9——Split Array into Consecutive Subsequences
- Leetcode 649, Split Array to Consecutive Subsequences
- [LeetCode] 贪心算法之 Split Array into Consecutive Subsequence
- bash split string into array
- Array into ranges of consecutive numbers
- 解释器模式学习和思考
- rpm安装mysql
- .net core 2.0 读取配置文件
- Hadoop在Ubuntu上的安装
- 机器学习中的范数规则化之L0、L1与L2范数
- 659. Split Array into Consecutive Subsequences
- WebService之CXF整合Spring框架发布REST服务
- 数据仓库学习笔记一
- bzoj 4571: [Scoi2016]美味
- movice1
- HTML基础 网页结构基础1
- 实验三 二叉树
- Mongodb--Python使用mongodb
- 黑魔法师之门(codevs1995)