题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
O(n)解法
1、解题思路
首先扑克牌中肯定不能有重复的元素(可以有重复的0),需要建立一个标记数组vis。其次,求出最大值和最小值,如果最大值和最小值的区间小于等于4就可以组成顺子,在计算最小值的时候需要把0剔除。
2、代码
public class Solution {
public boolean IsContinuous(int [] numbers) {
int maxV = -1;
int minV = 14;
int[] vis = new int[14];
for (int number : numbers) {
if (vis[number] == 1 && number != 0) {
return false;
}
vis[number] = 1;
if (number > maxV) {
maxV = number;
}
if (number < minV && number != 0) {
minV = number;
}
}
return maxV - minV <= 4;
}
}