码迷,mamicode.com
首页 > 其他好文 > 详细

扑克牌顺子

时间:2020-06-29 16:55:49      阅读:65      评论:0      收藏:0      [点我收藏+]

标签:要求   als   code   现在   好的   ret   temp   最大   数组   

题目描述

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.数组是否为空,return false。

2. 当抽到的牌中有重复且数字不为0,return false。

3. 数字0的出现的次数是num,则数组中的最大值减去第二大的值小于5时,return true。 

    对于已经排序好的数组,可以表示为numbers[numbers.length - 1] - numbers[num]  < 5。

public class Solution {
     public boolean isContinuous(int [] numbers) {
        
        int temp = 0;
        int num = 0;
        boolean f = false;
         
          if (numbers.length == 0) {
            return  false;
        }
          
        for (int k =0;k<numbers.length;k++) {
            if (numbers[k] == 0) {
                ++num;
            }
        }
        for (int i=0;i<numbers.length;++i) {
            for(int j=0;j<numbers.length-1-i;++j) {
                if (numbers[j]>numbers[j+1]) {
                    temp = numbers[j];
                    numbers[j] = numbers[j+1];
                    numbers[j+1] = temp;
                }
                if (numbers[j]==numbers[j+1] && numbers[j] != 0) {
                    f = true;
                }
            }
        }

        if (f) {
            return false;
        }else{
            int sub = numbers[numbers.length - 1] - numbers[num];
            return sub < 5;
        }
    }
}

 

 

扑克牌顺子

标签:要求   als   code   现在   好的   ret   temp   最大   数组   

原文地址:https://www.cnblogs.com/ofmou/p/13208640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!