659. Split Array into Consecutive Subsequences

网友投稿 642 2022-09-04

659. Split Array into Consecutive Subsequences

659. Split Array into Consecutive Subsequences

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: FalseNote:The length of the input is in range of [1, 10000]

class Solution public boolean isPossible(int[] nums) { Integer prev = null; int prevCount = 0; Queue starts = new LinkedList(); int anchor = 0; for (int i = 0; i < nums.length; ++i) { int t = nums[i]; if (i == nums.length - 1 || nums[i+1] != t) { int count = i - anchor + 1; if (prev != null && t - prev != 1) { while (prevCount-- > 0) if (prev < starts.poll() + 2) return false; prev = null; } if (prev == null || t - prev == 1) { while (prevCount > count) { prevCount--; if (t - 1 < starts.poll() + 2) return false; } while (prevCount++ < count) starts.add(t); } prev = t; prevCount = count; anchor = i + 1; } } while (prevCount-- > 0) if (nums[nums.length - 1] < starts.poll() + 2) return false; return true; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:647. Palindromic Substrings
下一篇:九种跨域方式实现原理(完整版)(跨域三种解决方式)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~