jz61.扑克牌中的顺子

题目描述

题解

小根堆

这道题的思路是遍历地判断当前地值比上一个值大一,所以保留着单调的顺序, 考虑使用堆结构, 使每一个堆顶的元素都比上一个弹出的元素大一. 如果没有大一, 那么查看是否有0的影响.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public boolean isStraight(int[] nums) {
PriorityQueue<Integer> queue = new PriorityQueue<>();
for (int num : nums) {
queue.add(num);
}
int zeroCount = 0;
int cur;
while (!queue.isEmpty() && queue.peek() == 0) {
zeroCount++;
queue.poll();
}

cur = queue.poll();
while (!queue.isEmpty()) {
if (queue.peek() == cur + 1) {
cur=queue.poll();
}else{
if (zeroCount!=0){
cur++;
zeroCount--;
}else {
return false;
}
}
}
return true;
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗