不过我用PQ和map倒是把怡二酒陆写出来了,速度>70%貌似还可以,和discussion的高票答案不是一个解法。
- class Solution {
- public boolean isPossibleDivide(int[] nums, int k) {
- if(nums.length%k!=0) return false;
-
- PriorityQueue<Integer> pq = new PriorityQueue<>();
- Map<Integer, Integer> info = new HashMap<>();
- for(int num:nums) {
- info.put(num, info.getOrDefault(num, 0)+1);
- }
-
- pq.addAll(info.keySet());
-
- while(!pq.isEmpty()) {
- int prev = 0;
- List<Integer> list = new ArrayList<>();
-
- for(int i=0; i<k; i++) {
- if(pq.isEmpty()) return false;
- if(i==0) {
- prev = pq.poll();
- list.add(prev);
- info.put(prev, info.get(prev)-1);
- continue;
- } else {
- int tmp = pq.poll();
- if(tmp-prev>1) return false;
- info.put(tmp, info.get(tmp)-1);
- prev = tmp;
- list.add(tmp);
- }
- }
-
- for(int num:list) {
- if(info.get(num)>0) {
- pq.offer(num);
- }
- }
- }
-
- return true;
- }
- }
复制代码
|