题目:从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

示例:

输入: [1,2,3,4,5]
输出: True

输入: [0,0,1,2,5]
输出: True

解题思路:
首先,我们可以把扑克牌按顺序排好,然后数一下一共有多少个大小王。然后我们从不是大小王的扑克开始遍历这副牌,看看他跟他的下一张牌是不是一样的,如果是,那么这副牌肯定不是顺子,如果不是,那么就比较该牌和他下一张牌之间的间距是不是等于1,如果不是,那么我们从大小王中进行对应数目的扣除,两牌间距为2,需要扣除1个大小王,两牌间距为3,需要扣除2个大小王,以此类推,最后我们比较剩余的没被扣除的大小王的个数,如果此时还有大于等于0的大小王,那么该牌是顺子,如果此时大小王不够扣除,那么该牌无法组成顺子。

需要注意的坑:
1、题干并没有说是一副扑克牌,所以,我们一定要多长个心眼,不能只判断前两张牌是不是大小王
2、大小王的扣除数量是 相邻两牌之间的差 + 1,而不是相邻两牌之间的差。

class Solution {public boolean isStraight(int[] nums) {//排序Arrays.sort(nums);int count = 0;//计算大小王个数for(int i = 0; i < 5; i++){if(nums[i] == 0){count++;}else{break;}}//从非零的扑克开始遍历,每次比较目前遍历的扑克和下一张扑克的点数差距for(int i = count; i < 4; i++){//出现两个重复的,一定不是顺子if(nums[i] == nums[i+1]){return false;}//非大小王的相邻扑克之间差多少用大小王的个数来代替if(nums[i] != nums[i+1] - 1){count = count - nums[i+1] + nums[i] + 1;}}//最后剩下的大小王刚好为0或者大于0,那么该扑克是顺子if(count >= 0)  return true;//否则不是顺子return false;}
}

力扣战绩:

扑克牌中的顺子(入门算法31)相关推荐

  1. java判断扑克牌是否为顺子_程序算法设计题,判断扑克牌中的顺子

    相信很多人都玩过扑克牌.在扑克牌中,有许许多多的算法供我们学习.仅仅一个斗地主游戏,就可以学习很多的算法.今天和大家分享一个判断扑克牌中的顺子的问题. 题目: 从扑克牌中随机抽取五张牌,判断是不是一个 ...

  2. 如何在JS中计算扑克牌中的顺子、对子、半顺、豹子、杂六

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>如何计算扑克牌中的顺子.对子.半顺.豹子.杂六</tit ...

  3. 【LeetCode】剑指 Offer 61. 扑克牌中的顺子

    [LeetCode]剑指 Offer 61. 扑克牌中的顺子 文章目录 [LeetCode]剑指 Offer 61. 扑克牌中的顺子 一.集合Set + 遍历 二.排序 + 遍历 总结 解题思路 根据 ...

  4. 【剑指Offer】个人学习笔记_61_扑克牌中的顺子

    目录 题目: [剑指 Offer 61. 扑克牌中的顺子](https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/) 题目分 ...

  5. 扑克牌中的顺子。从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。

    面试题36:扑克牌中的顺子 1.题目描述 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2~10为数字本身,A为1,J为11,Q为12,K为13,而大.小王可以看成任意数字 ...

  6. 【算法】剑指 Offer 61. 扑克牌中的顺子 【重刷】

    文章目录 1.概述 2.方案 2.1 想减法(自研) 2.2 set 2.3 排序 1.概述 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1, ...

  7. python 扑克牌中的顺子

    从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14.示例 ...

  8. 剑指Offer - 面试题61. 扑克牌中的顺子

    1. 题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14. 示 ...

  9. 【剑指offer】面试题61:扑克牌中的顺子(java)

    从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14. 示例 1: 输 ...

最新文章

  1. 基于Java的RDMA高性能通信库(四):DaRPC
  2. ce5e.cn fadian.php,空包网 PHP mysql
  3. JAVA数据类型及字符编码
  4. VUE 数据绑定模块渲染 computed(实现通过路由id 查询数据json结构,对应的值来放在面包屑中)...
  5. python教学视频r_R Tutorial
  6. java停启was集群_shell脚本实现weblogic 节点启停,应用部署
  7. mysql order by子查询_sql子查询 order by失效问题
  8. OpenCV-差分法实现绿叶识别(图像差分+颜色通道)
  9. 微信小程序---选项卡
  10. linux sys文件的创建
  11. 马克思主义哲学笔记(四)
  12. S3C2440驱动开发(一)
  13. 使用php-rdkafka错误总结: version `GLIBC_2.14‘ not found; rdkafka.so: undefined symbol: zend_object_alloc
  14. css中字体之间的距离是什么意思,css字符间距(css文字间距怎么设置)
  15. 计算个人所得税(老版)
  16. vue updated
  17. 转 Java知识——精华总结
  18. 【大数据】MaxCompute概述
  19. 几幅图教你区分数字地、模拟地、电源地、单点接地
  20. Alpha 冲刺(10/10)

热门文章

  1. 使用 pandas 玩转股票数据
  2. lia人是什么意思_“有的人手上没有斗”是什么意思,如何理解这句话?
  3. 《张成功项目管理记(第2版)》一第二章 项目管理之初体验
  4. 用python编程 商品打折_《Python编程入门指南》(上下册)
  5. 签到题:买房问题,利率计算
  6. 开发者实践:做一个双人视频社交小游戏,“甩头”才能玩
  7. 黑莓开发之环境的搭建
  8. 香港首批虚拟银行牌照将下发 腾讯蚂蚁金服等或在列
  9. Spring Boot学习(3)
  10. CAP(Cumulative Accuracy Profile)曲线/AR值释义