1. 程式人生 > >劍指offer:撲克牌順子

劍指offer:撲克牌順子

pre pro null ati bre ont stat log http

http://wiki.jikexueyuan.com/project/for-offer/question-forty-four.html

題目:從撲克牌中隨機抽 5 張牌,判斷是不是一個順子, 即這 5 張牌是不是連續的。2~10 為數字本身, A 為 1。 J 為 11、Q 為 12、 為 13。小王可以看成任意數字。

首先把數組排序,

記錄非0的最小值和最大值,

如果連起來則需要滿足:

1)數組中不能有重復值(沒有對子)

2)max-min<=4

public static boolean isContinuous(int [] numbers) {
            if (numbers == null
|| numbers.length != 5) { return false; } // 冒泡排序 for(int i=numbers.length-1;i>=0;i--){ for(int j=0;j<i;j++){ if(numbers[j]>numbers[j+1]){ int temp = numbers[j]; numbers[j]
= numbers[j+1]; numbers[j+1] = temp; } } } //找到第一個不是0的位置 int zeroindex = 0; while(zeroindex<numbers.length){ if(numbers[zeroindex]==0){ zeroindex
++; }else{ break; } } if(zeroindex==numbers.length){ return true; } //判斷是否有重復數字 for(int i=zeroindex;i<numbers.length-1;i++){ if(numbers[i]!=numbers[i+1]){ i++; }else{ return false; //有重復數字,不能連起來 } } //判斷最大值、最小值是否差太多 if(numbers[numbers.length-1]-numbers[zeroindex]<=numbers.length-1){ return true; }else{ return false; } }

劍指offer:撲克牌順子