扑克牌顺子

蹲街弑〆低调 提交于 2019-11-29 14:20:52



import java.util.Arrays;
public class Solution {
    public boolean isContinuous(int[] numbers) {
        int numOfZero = 0;
        int numOfInterval = 0;
        int length = numbers.length;
        if(length == 0){
           return false;
        }
        Arrays.sort(numbers);
        for (int i = 0; i < length - 1; i++) {
            // 计算癞子数量
            if (numbers[i] == 0) {
                numOfZero++;
                continue;
            }
            // 对子,直接返回
            if (numbers[i] == numbers[i + 1]) {
                return false;
            }
            numOfInterval += numbers[i + 1] - numbers[i] - 1;
        }
        if (numOfZero >= numOfInterval) {
            return true;
        }
        return false;
    }
}
numOfInterval += numbers[i + 1] - numbers[i] - 1;


这个计算2个数字之间的差值(这个差值是指的完成顺子) 例如 2 和 3满足顺子,相减结果为1,所以要减去1,结果为0, 例如2 和 4,要满足顺子,中间必须加上一个3,也就是需要加上一个数,所以4-2-1-=1

 


举个栗子如1, 0, 3, 0, 5这个,如果计算最大值和最小值那么是(5-1)得出4中间相差3个数字,但是joker只有两张补不上。但实际上(3-1)得出2差一个,(5-3)得出2差一个,一共确实是差两个,joker也刚好有两张

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!