【Lintcode】1728. X of a Kind in a Deck of Cards
題目地址:
https://www.lintcode.com/problem/x-of-a-kind-in-a-deck-of-cards/description
給定一個陣列 A A A,將其分組成若干組(可以重排 A A A),使得每組的數字都相等,每組數字的個數相等,並且每組數字個數都至少是 2 2 2。返回這個每組數字個數。
先用雜湊表統計每個數出現次數,答案其實就是所有出現次數的最大公約數。如果最大公約數是 1 1 1,則返回false,否則最後返回true。程式碼如下:
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Solution {
/**
* @param deck: a integer array
* @return: return a value of bool
*/
public boolean hasGroupsSizeX(List<Integer> deck) {
// write your code here
Map<Integer, Integer> map = new HashMap<>();
for (int d : deck) {
map.put(d, map.getOrDefault(d, 0) + 1);
}
// 求最少出現次數
int x = deck.size();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
x = Math.min(x, entry.getValue());
}
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
// 求最大公約數,如果最大公約數是1,則返回false
x = gcd(x, entry.getValue());
if (x == 1) {
return false;
}
}
return true;
}
private int gcd(int x, int y) {
while (y != 0) {
int tmp = x % y;
x = y;
y = tmp;
}
return x;
}
}
時間複雜度 O ( l A log l A ) O(l_A\log l_A) O(lAloglA)( log l A \log l_A loglA的部分來自於求最大公約數,但實際時間要比這個小得多),空間 O ( l A ) O(l_A) O(lA)。
相關文章
- 【Lintcode】141. Sqrt(x)
- DataTransferItem.kind 屬性
- 使用kind搭建kubernetes
- POJ 1511-Invitation Cards(SPFA)
- Serialize Your Deck with Positron [XML Serialization, XSD, C#]XMLC#
- CARDS主題 & 導航欄樣式修改
- 使用 kind 快速搭建 kubernetes 環境
- OGEM Shale Shaker with Electric Deck Angle Adjustment:Lastest PatentAST
- Throwing cards away I(queue迴圈佇列)佇列
- Kubernetes容器化工具Kind實踐部署Kubernetes v1.18.x 版本, 釋出WordPress和MySQLMySql
- LeetCode之Reveal Cards In Increasing Order(Kotlin)LeetCodeKotlin
- 國外獨立開發者怎樣評價PC掌機Steam Deck?
- SteamDB:Steam Deck支援遊戲總量破1.3萬 超過Switch遊戲
- 使用 Kind 搭建你的本地 Kubernetes 叢集
- 如何使用 Kind 快速建立 K8s 叢集?K8S
- 使用kind快速搭建本地k8s叢集K8S
- QUESTION :What kind of shared storage do you use for Oracle RAC?Oracle
- POJ 1511 Invitation Cards(最短路spfa演算法)演算法
- Codeforces Round #235 (Div. 2) A. Vanya and Cards
- [LintCode] Daily TemperaturesAI
- LintCode 子樹
- LintCode-Backpack
- LintCode-HeapifyAPI
- [LintCode] Permutation in String
- LintCode 主元素 II
- LintCode 解碼方法
- LintCode-Search for a Range
- LintCode-K Sum
- LintCode-Word SegmentationSegmentation
- LintCode-Hash FunctionFunction
- LintCode-Fast PowerAST
- Lintcode-Max Tree
- LintCode-Partition Array
- LintCode-Subarray Sum
- LintCode-Majority Number
- LintCode-A+B Problem
- LintCode-BackPack II
- LintCode-Previous Permuation