题目描述

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

 

示例 1:

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

示例 2:

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

限制:

数组长度为 5 

数组的数取值为 [0, 13] 

解题思路:

只需要判断数组中除值为0的数以外的数中,在无重复数的情况下,

 1 class Solution {
 2     public boolean isStraight(int[] nums) {
 3         //设最大最小值分别为max,min
 4         int max=nums[0],min=nums[0];
 5         //使初始的max,min不为0
 6         if(max==0){
 7         for(int i=1;i<nums.length;i++){
 8             if(nums[i]!=0){
 9                 max=nums[i];
10                 min=nums[i];
11             }
12         }
13         }
14         for(int i=0;i<nums.length;i++){
15             //如有重复则不能为顺子
16             for(int j=i+1;j<nums.length;j++){
17                 if(nums[i]==nums[j]&&nums[i]!=0)
18                 return false;
19             }
20             //更新最大值
21             if(nums[i]>max)
22             max=nums[i];
23             //更新最小值
24             if(nums[i]<min&&nums[i]!=0)
25             min=nums[i];
26         }
27         //判断
28         if(max-min<=4){
29             return true;
30         }
31         else{
32             return false;
33         }
34     }
35 }

 

 

最大数—最小数的值是否小于等于4即可。

 

posted on 2021-03-25 16:51  wxcongajiayou  阅读(35)  评论(0)    收藏  举报