剑指Offer(44)-扑克牌顺子

题目:

在这里插入图片描述

思路:

首先我们需要对牌进行排序,又因为赖子牌是0,因此在我们遍历的时候是可以先统计出赖子牌的数量的,然后我们对相邻两张牌进行处理,如果相等,直接返回false。若不相等,我们判断两张牌的点数,如果差1,那么是连牌,如果大于1,那么我们就用赖子牌进行替换,若赖子牌不够返回false。

import java.util.Arrays;
public class Solution {
    public boolean isContinuous(int [] numbers) {
        if(numbers==null||numbers.length==0)
            return false;
        Arrays.sort(numbers);
        int n=0;
        for(int i=0;i<numbers.length-1;i++){
            if(numbers[i]==0){
                n++;
                continue;
            }
            //出现对子
            if(numbers[i]==numbers[i+1])
                return false;
            int num=numbers[i+1]-numbers[i];
            //赖子不够
            if(num-1>n){
                return false;
            }else{ //减去赖子牌
                n=n-num+1;
            }
        }
        return  true;
    }
}

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/92818672