題目:從撲克牌中隨機抽5張牌,判斷是不是一個順子,即這5張牌是不是連續的。2~10爲數字本身,A爲1,J爲11,Q爲12,K爲13,而大、小王可以看成任意數字。爲了方便起見,你可以認爲大小王是0。
思路:五個數滿足下面幾個條件即可(使用TreeSet默認對int實現自動有序排列並且值不能重複)
1、剩餘數字+0的個數=5
2、排序後的最大值-最小值<5 // 注意這裏是大小王除外的即0除外的元素
3、沒有重複數字
import java.util.*;
public class Solution {
public boolean isContinuous(int [] numbers) {
if(numbers==null||numbers.length!=5)return false;
int num = 0;
TreeSet<Integer> set = new TreeSet<Integer>();
for(int i =0;i<numbers.length;i++){
if(numbers[i]==0){
num++;
}else{
set.add(numbers[i]);
}
}
if(num+set.size()!=5){
return false;
}
if((set.last()-set.first())<5){
return true;
}
return false;
}
}
時間複雜度:O(n)
空間複雜度:O(1)
練習地址:https://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4