扑克牌顺子
扑克牌顺子
http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4
思想是用一些变量来记录最小、最大值、前一个不为0的值,想要得到顺子,必须最大的牌和最小的牌的差值不大于4,例如10005,先排序,如果前一个值等于当前值,不可能为顺子,返回false;最后判断是否差值小于等于4,如果成立,则返回true。
import java.util.Arrays;
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers.length == 0 || numbers == null) return false;
int min = 14;
int max = -1;
int pre = -1;
Arrays.sort(numbers);
for(int i = 0; i < numbers.length; ++i){
if(numbers[i] != 0 && pre == numbers[i]) return false;
if(numbers[i] != 0 && numbers[i] > max) max = numbers[i];
if(numbers[i] != 0 && numbers[i] < min) min = numbers[i];
pre = numbers[i] == 0? pre:numbers[i];
}
if(max - min <= 4) return true;
return false;
}
}时间复杂度0(2N)
空间复杂度O(1)
网易游戏公司福利 617人发布