leetcode914. 卡牌分组
生活随笔
收集整理的這篇文章主要介紹了
leetcode914. 卡牌分组
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
給定一副牌,每張牌上都寫著一個整數。
此時,你需要選定一個數字 X,使我們可以將整副牌按下述規則分成 1 組或更多組:
每組都有?X?張牌。
組內所有的牌上都寫著相同的整數。
僅當你可選的 X >= 2 時返回?true。
?
示例 1:
輸入:[1,2,3,4,4,3,2,1]
輸出:true
解釋:可行的分組是 [1,1],[2,2],[3,3],[4,4]
示例 2:
輸入:[1,1,1,2,2,2,3,3]
輸出:false
解釋:沒有滿足要求的分組。
示例 3:
輸入:[1]
輸出:false
解釋:沒有滿足要求的分組。
示例 4:
輸入:[1,1]
輸出:true
解釋:可行的分組是 [1,1]
示例 5:
輸入:[1,1,2,2,2,2]
輸出:true
解釋:可行的分組是 [1,1],[2,2],[2,2]
提示:
1 <= deck.length <= 10000
0 <= deck[i] <?10000
思路:思考后得出結論,每個數字出現的次數,如果有一個總的最大公約數,就可行。
比如1出現了2次,2出現了4次,3出現了8次,此用例就是true。
另外注意到deck[i]的范圍,明顯用桶記錄更好。
class Solution {public boolean hasGroupsSizeX(int[] deck) {int[] count = new int[10000];for (int c: deck) count[c]++;int g = -1;for (int i = 0; i < 10000; ++i)if (count[i] > 0) {if (g == -1) g = count[i];else g = gcd(g, count[i]);}return g >= 2;}public int gcd(int x, int y) {return x == 0 ? y : gcd(y%x, x);} }?
總結
以上是生活随笔為你收集整理的leetcode914. 卡牌分组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买安置房能不能办贷款?
- 下一篇: [C#]Http请求报头设置