资讯专栏INFORMATION COLUMN

【刷算法】扑克牌顺子

darkbug / 3182人阅读

摘要:上面的张牌就可以变成大小王分别看作和。现在要求你使用这幅牌模拟上面的过程然后告诉我们的运气如何,如果牌能组成顺子就输出,否则就输出。例如可以看做可以看做但是类似于就不行,因为和之间需要两个数字来补,但是只有一个,所以不能构成顺子。

题目描述

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。

分析

简单地说,其实就是给一个数组,检查数组是否构成一个顺序序列,且数组中的0可以被替换为任意数字。

例如:

[0,0,1,2,3]可以看做[1,2,3,4,5]

[0,1,3,4,5]可以看做[1,2,3,4,5]

但是类似于[0,1,4,5,6]就不行,因为4和1之间需要两个数字来补,但是只有一个0,所以不能构成顺子。

所以总结一下:

序列中有相同的数字,即对子的出现,则返回false

如果出现了n个0,说明可以由n个数字可以被补上,这个时候需要检查整个序列需要几个数字来补,记为m,如果m大于n,则返回false,否则返回true。例如:

数组[0,0,2,4,7],遍历序列后需要(4-2-1)+(7-4-1)=3个数字来补,但是0的个数是2,所以补不够,返回false

代码实现
function IsContinuous(numbers)
{
    if(numbers === null || numbers.length !== 5)    
        return false;
    
    numbers.sort(function(a,b) {
        return a-b;
    })
    
    var count = 0;    // 有几个王
    var distance = 0;    // 差值
    if(numbers[3] === 0)
        return true;
    else if(numbers[2] === 0)
        count = 3;
    else if(numbers[1] === 0)
        count = 2;
    else if(numbers[0] === 0)
        count = 1;
    
    for(var i = count;i < numbers.length-1;i++) {
        if(numbers[i+1] - numbers[i] === 0)
            return false;
        else if(numbers[i+1] - numbers[i] === 1)
            continue;
        else 
            distance = distance + numbers[i+1] - numbers[i] - 1;
    }
    
    if(distance > count)
        return false;
    else 
        return true;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96303.html

相关文章

  • 基于状态机模型的斗地主游戏(NodeJs&SocketIO)

    摘要:系统结构系统考虑使用和实现服务器端逻辑,前端使用。逻辑流程主要逻辑包括用户进入游戏等待对家进入游戏游戏过程结束统计这个过程。 1. 系统结构 系统考虑使用Nodejs和SocketIo实现服务器端逻辑,前端使用HTML5。showImg(https://segmentfault.com/img/remote/1460000007643089); 2. 逻辑流程 1 . 主要逻辑包括用户...

    NoraXie 评论0 收藏0
  • 基于状态机模型的斗地主游戏(NodeJs&SocketIO)

    摘要:系统结构系统考虑使用和实现服务器端逻辑,前端使用。逻辑流程主要逻辑包括用户进入游戏等待对家进入游戏游戏过程结束统计这个过程。 1. 系统结构 系统考虑使用Nodejs和SocketIo实现服务器端逻辑,前端使用HTML5。showImg(https://segmentfault.com/img/remote/1460000007643089); 2. 逻辑流程 1 . 主要逻辑包括用户...

    xcold 评论0 收藏0
  • 大学一年之后竟如此。。。开学前的挣扎

    摘要:后来知道有了院赛,学长说刷院和杭电就可,我就一直刷院,到最后比赛前院的前五十道基本做完,杭电也弄了十来道,就这样草草参加比赛了。 博客主页: https://b...

    MartinDai 评论0 收藏0
  • 记录计算顺子(12,3,4或者9,0,1,2)的方法

    摘要:顺子号或者或者之类的工作中写的那个还有,晚上研究了下终于写出个没有的方法,分享下,如果看到这篇文章还有更好办法的欢迎交流,共同进步。这边的数组比如这边的数组比如只要和是顺子并且长度总和等于,或者的长度等于那么数组就是顺子的情况 顺子号:1,2,3,4,5或者9,0,1,2,3,4或者7,8,9,0,1之类的工作中写的那个还有bug,晚上研究了下终于写出个没有bug的方法,分享下,如果看...

    Hancock_Xu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<