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

发布时间 2023-09-11 19:12:30作者: 小星code

题目链接: 剑指 Offer 61. 扑克牌中的顺子

题目描述:

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

解法思路:

代码:

// 1.将所有的 0 删掉,看剩下的数
// 2.看有没有相同的数
// 3.看最大最小值之间的差,是否 < 5
func isStraight(nums []int) bool {
    if len(nums) == 0{
        return false
    }
    //排序
    sort.Ints(nums)
    k := 0 
    for nums[k] == 0{
        k++
    }
    //注意这里是 i := k+1
    for i := k + 1; i < len(nums) ;i++{
        if nums[i] == nums[i-1]{ 
            // 遇到相同元素, 返回false
            return false
        }
    }
    //最大最小值差值小于等于 4
    if  (nums[len(nums)-1] - nums[k]) > 4 {
        return false
    }

    return true
}