61. 扑克牌中的顺子【Set/排序】

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

示例 1:

输入: [1,2,3,4,5]
输出: True

示例 2:

输入: [0,0,1,2,5]
输出: True

限制:

  • 数组长度为 5

  • 数组的数取值为 [0, 13]

2. 标签

  • 数组

  • 排序

  • 哈希表

3. 解法 - 集合 Set

3.1 Java

3.2 Kotlin

3.3 复杂度分析

  • 时间复杂度 O(N) :其中 N 为数组 nums 的长度,遍历数组需要使用 O(N) 时间。

  • 空间复杂度 O(N) :集合 Set 只占用了 O(N) 的额外存储空间。

4. 解法 - 排序

4.1 Java

4.2 Kotlin

4.3 复杂度分析

  • 时间复杂度 O(NlogN) :其中 N 为数组 nums 的长度,使用内置函数对数组进行排序需要占用 O(NlogN) 的时间。本题的 N 恒等于 5,所以时间复杂度为 O(5log5) = O(1)

  • 空间复杂度 O(1) :变量 kingNum 仅占用了常数大小的额外存储空间。

4. 参考

最后更新于

这有帮助吗?