前往
大廳
主題

LeetCode - 2347. Best Poker Hand 解題心得

Not In My Back Yard | 2023-06-12 12:00:11 | 巴幣 0 | 人氣 157

題目連結:


題目意譯:
你被給定一整數陣列 ranks 以及一個字元陣列 suits。你有 5 張卡片其中第 i 張卡的點數為 ranks[i] 以及花色為 suits[i]。

下列為你可以製造的撲克牌型,由好排到爛:
"Flush"(同花): 五張相同花色的卡片。
"Three of a Kind"(三條): 三張相同點數的卡片。
"Pair"(對子): 兩張相同點數的卡片。
"High Card"(散牌): 任何單獨的卡片。

回傳一個字串代表著你從給定的卡片中可以弄出最好的撲克牌型。

注意回傳值中的大小寫是有差異的(Case-Sensitive)。

限制:
ranks.length == suits.length == 5
1 ≦ ranks[i] ≦ 13
'a' ≦ suits[i] ≦ 'd'
沒有兩張卡片同時有著相同的點數和花色。



範例測資:
範例 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" 更好。
同時也注意到其他牌也可以用來弄出 "Three of a Kind"。

範例 3:
輸入: ranks = [10,10,2,12,9], suits = ["a","b","c","a","d"]
輸出: "Pair"
解釋: 由第一和二張牌組成的手牌有著相同的點數,所以我們有一個 "Pair"。
注意到我們沒辦法弄出一個 "Flush" 或是一個 "Three of a Kind"。


解題思維:
就是單純地按照 "Flush" → "Three of a Kind" → "Pair" 的順序去檢查即可。如果有先遇到哪個符合的就回傳(因為順位比較前面,代表比較該牌型比較好)。如果掃完之後都沒有就回傳 "High Card"。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作