659. 分割数组为连续子序列 给你一个按升序排序的整数数组 num(可能包含重复数字),请你将它们分割成一个或多个子序列,其中每个子序列都由连续整数组成且长度

262 阅读1分钟

class Solution { public boolean isPossible(int[] nums) { Map<Integer, PriorityQueue> map = new HashMap<Integer, PriorityQueue>(); for (int x : nums) { if (!map.containsKey(x)) { map.put(x, new PriorityQueue()); } if (map.containsKey(x - 1)) { int prevLength = map.get(x - 1).poll(); if (map.get(x - 1).isEmpty()) { map.remove(x - 1); } map.get(x).offer(prevLength + 1); } else { map.get(x).offer(1); } } Set<Map.Entry<Integer, PriorityQueue>> entrySet = map.entrySet(); for (Map.Entry<Integer, PriorityQueue> entry : entrySet) { PriorityQueue queue = entry.getValue(); if (queue.peek() < 3) { return false; } } return true; } }