题目链接: 剑指 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
}