cubegao

Swift.扑克牌的顺子

2015-06-08

题目描述:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。2~10为数字本身, A为1。 J为11、Q为12、 为13。小王可以看成任意数字。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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

Tags: 算法

扫描二维码,分享此文章