题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大,小王可以看成任意数字。
首先把数组排序,再统计数组中0的个数,最后统计排序之后的数组中相邻数字之间的空缺总数。如果空缺的总数小于或者等于0的个数,那么这个数组就是连续的;反之则不连续。
代码实现:
import java.util.Arrays; public class Solution{ public static boolean isContinuous(int[] numbers){ if(numbers==null||numbers.length==0){ return false; } //数组排序 Arrays.sort(numbers); //记录数组中元素为0的个数 int numberOfZero=0; //记录整个数组的间隔数 int numberOfGap=0; for(int i=0;i<numbers.length;i++){ if(numbers[i]==0){ numberOfZero++; }else if(i+1<numbers.length){ //判断相邻两数是否相等 if(numbers[i+1]==numbers[i]){ return false; }else{ numberOfGap+=numbers[i+1]-numbers[i]-1; } } } if(numberOfZero<numberOfGap){ return false; }else{ return true; } } public static void main(String[] args){ int[] numbers={0,0,4,5,7}; boolean isContinuous=isContinuous(numbers); System.out.println(isContinuous); } }
posted on
浙公网安备 33010602011771号