1.簡述:
描述
現在有2副撲克牌,從撲克牌中随機五張撲克牌,我們需要來判斷一下是不是順子。
有如下規則:
1. A為1,J為11,Q為12,K為13,A不能視為14
2. 大、小王為 0,0可以看作任意牌
3. 如果給出的五張牌能組成順子(即這五張牌是連續的)就輸出true,否則就輸出false。
4.資料保證每組5個數字,每組最多含有4個零,數組的數取值為 [0, 13]
要求:空間複雜度 ,時間複雜度 ,本題也有時間複雜度 的解法
輸入描述:
輸入五張撲克牌的值
傳回值描述:
五張撲克牌能否組成順子。
示例1
輸入:
[6,0,2,0,4]
傳回值:
true
說明:
中間的兩個0一個看作3,一個看作5 。即:[6,3,2,5,4]
這樣這五張牌在[2,6]區間連續,輸出true
示例2
輸入:
[0,3,2,6,4]
傳回值:
true
示例3
輸入:
[1,0,0,1,0]
傳回值:
false
示例4
[13,12,11,0,1]
false
import java.util.*;
public class Solution {
public boolean IsContinuous(int [] numbers) {
Set<Integer> set = new HashSet<>();
int max = Integer.MIN_VALUE, min =Integer.MAX_VALUE;
//周遊數組
for (int number:
numbers) {
if(number == 0) {
continue;
}
//包含相同牌則直接傳回,否則加入
if(set.contains(number)){
return false;
}else {
set.add(number);
}
//每次周遊記錄最大值,最小值
max = StrictMath.max(max,number);
min = StrictMath.min(min,number);
}
return max - min < 5;
}
}