剑指offer—扑克牌顺子 解答

剑指offer—扑克牌顺子

题目描述

用一副扑克牌模拟中彩票,如果抽出的5张牌为顺子,则返回true;反之,返回false;使用大小鬼代替任何一个数字,大小鬼为0

思路

排序后循环

我们使用一个max和min指针记录数组最大元素和最小元素的索引(最小元素不为0,0可以作为任意元素);循环数组如果为0,执行min++,如果不为0,判断是否为对子(前后元素相等),如果是,返回false

维护好了max、min后,我们计算最大元素的值和最小元素的值相差多少,如果大于等于5返回false

代码

import java.util.Arrays;
public class Solution {
    public boolean isContinuous(int [] numbers) {
        Arrays.sort(numbers);
        int max = numbers.length-1;
        if(max<=0) return false;
        int min = 0;
        for(int i=0;i<max;i++){
            if(numbers[i]==0){
                min++;
            }else{
                if(numbers[i]==numbers[i+1]) return false;
            }
        }
        return numbers[max]-numbers[min]<5;
    }
}
  • 本文作者: dzou | 微信:17856530567
  • 本文链接: http://www.dzou.top/post/straight.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!