欢迎光临散文网 会员登陆 & 注册

2347. 最好的扑克手牌

2023-02-21 09:05 作者:目标力扣Knight  | 我要投稿

2347. 最好的扑克手牌

方法一:集合 + 哈希

利用集合元素唯一的特性,判断其花色是否满足第一个条件,利用哈希计数,统计每一个级别的出现次数,按照题目给定优先级判断每一个条件,注意哈希计数中,值的排序会影响到优先级的执行,因此我们用any()关键字处理只要有一个的情况。

Python版本

C++版本

复杂度分析

  • 时间复杂度:O(C)。哈希表以 rank 数组中的值作为键,值域就是键的数量,最多为13,将 suit 数组转换为集合,至多遍历5次,总复杂度为18,记为常数;

  • 空间复杂度:O(C)。哈希表以 rank 数组中的值作为键,值域就是键的数量,最多为13。

备注

  1. 哈希数组中,键是否有序会影响到用if判断是否存在对子和顺子【相同数值的个数为三个以上以及两个】谁先结束,为此使用Python 中的any()关键字,C++中的 any_of()函数判断只要存在某个条件的条件;

  2. 题目给定的判断条件具有优先级,注意按照顺序做逻辑判断。


2347. 最好的扑克手牌的评论 (共 条)

分享到微博请遵守国家法律