网站建设课程大纲,动漫设计师资格证,广州做网站公司哪家比较好,网站查询域名ip解析2347. 最好的扑克手牌
题目#xff1a;
给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌#xff0c;第 i 张牌大小为 ranks[i] #xff0c;花色为 suits[i] 。
下述是从好到坏你可能持有的 手牌类型 #xff1a;
Flush#xff1a;同花
给你一个整数数组 ranks 和一个字符数组 suit 。你有 5 张扑克牌第 i 张牌大小为 ranks[i] 花色为 suits[i] 。
下述是从好到坏你可能持有的 手牌类型
Flush同花五张相同花色的扑克牌。 Three of a Kind三条有 3 张大小相同的扑克牌。 Pair对子两张大小一样的扑克牌。 High Card高牌五张大小互不相同的扑克牌。 请你返回一个字符串表示给定的 5 张牌中你能组成的 最好手牌类型 。
注意返回的字符串 大小写 需与题目描述相同。 示例 1
输入ranks [13,2,3,1,9], suits [a,a,a,a,a] 输出Flush 解释5 张扑克牌的花色相同所以返回 Flush 。 示例 2
输入ranks [4,4,2,4,4], suits [d,a,a,b,c] 输出Three of a Kind 解释第一、二和四张牌组成三张相同大小的扑克牌所以得到 Three of a Kind 。 注意我们也可以得到 Pair 但是 Three of a Kind 是更好的手牌类型。 有其他的 3 张牌也可以组成 Three of a Kind 手牌类型。 示例 3
输入ranks [10,10,2,12,9], suits [a,b,c,a,d] 输出Pair 解释第一和第二张牌大小相同所以得到 Pair 。 我们无法得到 Flush 或者 Three of a Kind 。 提示
ranks.length suits.length 5 1 ranks[i] 13 a suits[i] d 任意两张扑克牌不会同时有相同的大小和花色。 来源力扣LeetCode 链接https://leetcode.cn/problems/best-poker-hand 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 思路
首先我们建立一个所有情况的数组按照从坏到好的顺序依次加入结果根据一个辅助值来判断最后返回的结果。
其次我们先判断数字构建一个数组并且遍历ranks容器这里千万记得数组要初始化归0否则会报错如果一个数字的个数是2并且辅助值为0那么令辅助值为1。如果一个数字的个数是3并且辅助值不为0这里不为0的主要原因是当这个数为2的时候辅助值一定为1那么令辅助值为2。
最后我们遍历suits花色的事情很简单就一种情况那就是所有花色相同。那么我们只要对suits进行遍历一旦出现和第一个花色不同的情况那么就直接就退出循环即可。如果花色全部相同那么就令辅助值为3。
根据辅助值直接返回结果即可。 代码
class Solution {
public:string bestHand(vectorint ranks, vectorchar suits) {int count[15] {0};int sup 0;string ans[4] {High Card,Pair,Three of a Kind,Flush};for(int i 0;i 5;i){count[ranks[i]];if((count[ranks[i]] 2) (sup 0))sup 1;else if((count[ranks[i]] 3) (sup ! 0))sup 2;}int sum 0;for(int i 0;i 5;i){if(suits[i] suits[0])sum;elsebreak;}if(sum 5)sup 3;return ans[sup];}
};