java题解

扑克牌顺子

http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4

12.JZ45扑克牌顺子

时间复杂度O(N)
空间复杂度O(1)
思路: 找出数组中最大值和最小值(0不算)

​ 最大-最小-除0外的数的数字就是可以放0的空位 max-min-1-(numbers.length-2-count);

​ 如果空位<0代表有重复数字 falese

​ 如果空位<0的数量可以填充 true

​ 如果空位大于0的数量 false

​ 适用于不只是5个数 且负数也行
public boolean isContinuous(int [] numbers) {
int count = 0 , min = Integer.MAX_VALUE,max = Integer.MIN_VALUE;
for (int i = 0; i < numbers.length; i++) {
if(numbers[i]==0){
count++;}
if(numbers[i] > max && numbers[i]!=0){
max = numbers[i];
}
if(numbers[i] < min && numbers[i]!=0){
min = numbers[i];
}
}
int emptyNum = Math.abs(max-min)-1-(numbers.length-2-count);
if(emptyNum<0){
return false;
}
if(count-emptyNum>=0){
return true;
}
return false;
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务