0
点赞
收藏
分享

微信扫一扫

#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]

要求:空间复杂度 #yyds干货盘点# 解决剑指offer:扑克牌顺子_数据,时间复杂度 #yyds干货盘点# 解决剑指offer:扑克牌顺子_数据_02,本题也有时间复杂度 #yyds干货盘点# 解决剑指offer:扑克牌顺子_遍历数组_03 的解法

输入描述:

输入五张扑克牌的值

返回值描述:

五张扑克牌能否组成顺子。

示例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

2.代码实现:

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;

    }
}

举报

相关推荐

0 条评论