vue组件 properties Redis numpy css sharepoint cmd nhibernate vbscript nosql Echojs vue代码规范 vue自定义组件 nginx视频教程 jq点击事件 jq遍历元素 jq选择子元素 jquery获取dom对象 hadoop源码 sallenkey滤波器 oracle重命名表名 js数组截取前5个 yml文件注释 mysql重启 docker保存镜像 python调用方法 python入门指南 python支持中文 python中文教程 python命令大全 python设置环境变量 python如何定义变量 java基础教学 java开发环境搭建 java列表 java数据类型转换 迷宫解锁 制作字幕的软件 labview宝典 脚本大全
当前位置: 首页 > 学习教程  > 编程语言

剑指offer-例题 扑克牌顺子

2020/11/4 15:13:12 文章标签:

题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“O…

题目描述

LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。 现在,要求你使用这幅牌模拟上面的过程,然后告诉我们LL的运气如何, 如果牌能组成顺子就输出true,否则就输出false。为了方便起见,你可以认为大小王是0。

示例1

输入

复制

[0,3,2,6,4]

返回值

复制

true
public class Solution {
    public boolean isContinuous(int [] numbers) {
        if(numbers==null||numbers.length<5)
            return false;
        for(int i=0;i<numbers.length-1;i++)
        {
            int max=numbers[0];
            int index=0;
            for(int j=0;j<=numbers.length-1-i;j++)
            {
                if(max<numbers[j])
                {
                    max=numbers[j];
                    index=j;
                }
            }
            numbers[index]=numbers[numbers.length-1-i];
            numbers[numbers.length-1-i]=max;
        }
        int sum=0;
        for(int i=0;i<numbers.length;i++)
        {
            if(numbers[i]==0)
                sum++;
        }
        //其实直接统计出间隙数,然后与0的个数相比较更为简单
        for(int i=sum;i<numbers.length-1;i++)
        {
            if(numbers[i+1]-numbers[i]==1)
                continue;
            else if(numbers[i+1]-numbers[i]==0)
                return false;
            else if(numbers[i+1]-numbers[i]-1>sum)
                return false;
            else
                sum-=numbers[i+1]-numbers[i]-1;
        }
        return true;
    }
}

注意:

1、全部为0的情况

2、有相同牌的情况,不是顺子

3、大小王先定义为0,这很巧妙       为什么是0:可以与其他牌面区分开来

4、0的个数多于间隙总数的情况


本文链接: http://www.dtmao.cc/news_show_350357.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?