天天看點

#yyds幹貨盤點# 解決劍指offer:撲克牌順子

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;

    }
}