本文共 1080 字,大约阅读时间需要 3 分钟。
题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王可以看成任意数字。
public boolean isStraight(int[] nums) { if (nums.length != 5) { return false; } Arrays.sort(nums); int zero = 0, i = 0; while (i < 5 && nums[i] == 0) { zero++; i++;// i++不能在循环里! } int subIndex = 5 - i - 1, gap = 0; while (i < 5) { if (i != 4) { if (nums[i + 1] == nums[i]) { return false; } gap += nums[i + 1] - nums[i]; } i++; } return gap - zero <= subIndex; }
public boolean isStraight(int[] nums) { int joker = 0; Arrays.sort(nums); // 数组排序 for(int i = 0; i < 4; i++) { if(nums[i] == 0) joker++; // 统计大小王数量 else if(nums[i] == nums[i + 1]) return false;// 若有重复,提前返回 false } return nums[4] - nums[joker] < 5; // 最大牌 - 最小牌 < 5 则可构成顺子 }
转载地址:http://wrzzi.baihongyu.com/