剑指offer-45

扑克牌顺子

http://www.nowcoder.com/questionTerminal/762836f4d43d43ca9deb273b3de8e1f4

核心思想:类似用bit-map一样计数排序,毕竟只有0-13这14种牌。然后用大小王去填补牌之间的空缺,或者连续牌前后的空缺。
我这个代码并不是完完全全符合这个核心思想的(全是大小王不能判断,现有连续牌都在最后几张不能判断),但是过了,不想改了。

public class Solution {
    public boolean isContinuous(int [] numbers) {
        if(numbers.length==0){
            return false;
        }
        int[] arr = new int[14];
        for(int i=0;i<14;i++){
            arr[i] = 0;
        }
        for(int n : numbers){
            arr[n]++;
        }
        int flag = 0;
        for(int i=1;i<14;i++){
            if(arr[0]==0&&arr[i]==0){
                break;
            }
            if(arr[i]>0){
                flag++;
                continue;
            }
            if(flag>0&&arr[i]==0&&arr[0]>0){
                arr[i] = 1;
                arr[0] -= 1;
                flag++;
            }
        }
        return flag==numbers.length;
    }
}
全部评论

相关推荐

小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务