题目描述:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。2~10为数字本身, A为1。 J为11、Q为12、 为13。小王可以看成任意数字。
import Foundation
class For44Solution {
func puke(_ nums: [Int]) -> Bool {
var zero = 0
var n = 0 //间隔
var last = -1
for i in nums.sorted() {
if i == 0 {
zero += 1
}
if last == i && last != 0 {
return false
}
if last != -1 {
n += i - last - 1
}
if i != 0 {
last = i
}
}
return zero >= n
}
}
算法思想: 首先把数组排序,再统计数组中0 的个数,最后统计排序之后的数组中相邻数字之间的空缺总数。如果空缺的总数小于或者等于0 的个数,那么这个数组就是连续的:反之则不连续。
github地址:https://github.com/cubegao/LeetCode