LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)

扑克牌中的顺子(简单)

2020年9月14日

题目来源:力扣
LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)_第1张图片

解题

  • 暴力
    if-else语句可破
class Solution {
     
    public boolean isStraight(int[] nums) {
     
        int king=0;
        Arrays.sort(nums);
        if(nums[0]==0) king++;
        for(int i=1;i<5;i++){
     
            if(nums[i]==0) king++;
            else if(nums[i-1]==0) continue;
            else if(nums[i-1]+1==nums[i]) continue;
            else if(nums[i-1]==nums[i]) return false;
            else if(nums[i]-nums[i-1]>1){
     
                int tmp=nums[i-1];
                while((king--)>0){
     
                    tmp++;
                    if(nums[i]-tmp==1) break;
                }
                if(nums[i]-tmp!=1)
                    return false;
            }
        }
        return true;
    }
}

LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)_第2张图片

  • 规律
    利用顺子的规律:最大牌-最小牌肯定会小于5,满足此条件就true
class Solution {
     
    public boolean isStraight(int[] nums) {
     
        int king=0;
        Arrays.sort(nums);
        for(int i=0;i<4;i++){
     
            if(nums[i]==0) king++;
            else if(nums[i]==nums[i+1]) return false;
        }
        return nums[4]-nums[king]<5;
    }
}

LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)_第3张图片

你可能感兴趣的:(LeetCode)