栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

题目

从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。

代码实现 基于快排的解法
class Solution {
    public boolean isStraight(int[] nums) {
        quickSort(nums,0,nums.length-1);
        //n表示当前有多少张任意牌
        int n = 0;
        for (int i = 0; i < nums.length - 1; i++) {
            if(nums[i] == 0){
                n++;
            }
            else if(nums[i] == nums[i+1]){
                return false;
            }
            //此时消耗的任意牌数量就是点数差-1
            else if (nums[i] + 1 != nums[i+1]){
                n-=nums[i+1] - nums[i] -1;
            }
            
        }
        return n>=0;
    }

    
    public void quickSort(int[] nums,int begin,int end){
        if(begin < end){
            int par = partition(nums,begin,end);
            quickSort(nums,begin,par-1);
            quickSort(nums,par + 1,end);
        }
    }

    

    public int partition(int[] nums,int left,int right){
        int temp = nums[right];
        int i = right;
        while (left < right){
            if(nums[left] > temp){
                right--;
                swap(nums,left,right);
            }else if(nums[left] == temp){
                left++;
            }else {//nums[left] < temp
                left++;
            }
        }
        swap(nums,i,left);
        return left;
    }
    public void swap(int[] nums,int i,int j){
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
使用系统自带的sort
class Solution {
    public boolean isStraight(int[] nums) {
        Arrays.sort(nums);
        //第一个不为0的数
        int index = 0;
        int max = nums[nums.length-1];
        for (int i = 0; i < nums.length-1; i++) {
            if(nums[i] == 0){
                index++;
                continue;
            }
            if(nums[i] == nums[i+1]){
                return false;
            }

        }
        return max - nums[index] < 5;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678238.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号