2347. 最好的扑克手牌
2023-02-21 09:05 作者:目标力扣Knight | 我要投稿

方法一:集合 + 哈希
利用集合元素唯一的特性,判断其花色是否满足第一个条件,利用哈希计数,统计每一个级别的出现次数,按照题目给定优先级判断每一个条件,注意哈希计数中,值的排序会影响到优先级的执行,因此我们用any()关键字处理只要有一个的情况。
Python版本
C++版本
复杂度分析
时间复杂度:O(C)。哈希表以 rank 数组中的值作为键,值域就是键的数量,最多为13,将 suit 数组转换为集合,至多遍历5次,总复杂度为18,记为常数;
空间复杂度:O(C)。哈希表以 rank 数组中的值作为键,值域就是键的数量,最多为13。
备注
哈希数组中,键是否有序会影响到用if判断是否存在对子和顺子【相同数值的个数为三个以上以及两个】谁先结束,为此使用Python 中的any()关键字,C++中的 any_of()函数判断只要存在某个条件的条件;