剑指 Offer 61. 扑克牌中的顺子

    科技2024-11-17  9

    LeetCode: 剑指 Offer 61. 扑克牌中的顺子

    需要考虑的情况有点多,不是思维上的难

    情况种类大概 0,0,2,2,5 4,2,9,7,6 0,0,1,2,5

    情况列举法

    class Solution { public boolean isStraight(int[] nums) { // 从小到大排序 Arrays.sort(nums); // 记录 0 的个数 int zero = 0; for (int i = 0; i < 5; i++) { if(nums[i] == 0) zero++; else break; } int i = zero; while (i < 4){ int temp = nums[i]; if (temp + 1 == nums[i + 1]){ i++; } else if(temp == nums[i + 1]){ // 出现重复的 return false; } else { // 不是连续的 int dis = nums[i + 1] - temp - 1; zero -= dis; if(zero < 0) return false; i++; } } return true; } }


    利用组成顺子的特点

    class Solution { public boolean isStraight(int[] nums) { Arrays.sort(nums); int zero = 0; for (int i = 0; i < nums.length - 1; i++) { if(nums[i] == 0) zero++; else if(nums[i] == nums[i + 1]) return false; } int mx = nums[nums.length - 1]; int mn = nums[zero]; int dis = mx - mn; if(dis > 4) return false; // 只要 最大值 - 最小值 不大于 4 就可以构成顺子 return true; } }

    >> 解题思路

    Processed: 0.048, SQL: 8