Skip to content

Commit 626a13e

Browse files
authored
Improved task 914.
1 parent 7ce1292 commit 626a13e

File tree

2 files changed

+14
-25
lines changed

2 files changed

+14
-25
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2945,7 +2945,7 @@ implementation 'com.github.javadev:leetcode-in-java:1.11'
29452945
| 0917 |[Reverse Only Letters](src.save/main/java/g0901_1000/s0917_reverse_only_letters/Solution.java)| Easy | String, Two_Pointers | 0 | 100.00
29462946
| 0916 |[Word Subsets](src.save/main/java/g0901_1000/s0916_word_subsets/Solution.java)| Medium | Array, String, Hash_Table | 30 | 57.30
29472947
| 0915 |[Partition Array into Disjoint Intervals](src.save/main/java/g0901_1000/s0915_partition_array_into_disjoint_intervals/Solution.java)| Medium | Array | 2 | 99.81
2948-
| 0914 |[X of a Kind in a Deck of Cards](src.save/main/java/g0901_1000/s0914_x_of_a_kind_in_a_deck_of_cards/Solution.java)| Easy | Array, Hash_Table, Math, Counting, Number_Theory | 16 | 19.29
2948+
| 0914 |[X of a Kind in a Deck of Cards](src.save/main/java/g0901_1000/s0914_x_of_a_kind_in_a_deck_of_cards/Solution.java)| Easy | Array, Hash_Table, Math, Counting, Number_Theory | 11 | 51.18
29492949
| 0913 |[Cat and Mouse](src.save/main/java/g0901_1000/s0913_cat_and_mouse/Solution.java)| Hard | Dynamic_Programming, Math, Graph, Memoization, Topological_Sort, Game_Theory | 16 | 97.20
29502950
| 0912 |[Sort an Array](src.save/main/java/g0901_1000/s0912_sort_an_array/Solution.java)| Medium | Array, Sorting, Heap_Priority_Queue, Divide_and_Conquer, Merge_Sort, Bucket_Sort, Counting_Sort, Radix_Sort, Udemy_Sorting_Algorithms | 25 | 38.15
29512951
| 0911 |[Online Election](src.save/main/java/g0901_1000/s0911_online_election/TopVotedCandidate.java)| Medium | Array, Hash_Table, Binary_Search, Design, Binary_Search_II_Day_20 | 63 | 98.81
Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,31 @@
11
package g0901_1000.s0914_x_of_a_kind_in_a_deck_of_cards;
22

33
// #Easy #Array #Hash_Table #Math #Counting #Number_Theory
4-
// #2022_03_29_Time_16_ms_(19.29%)_Space_52.2_MB_(35.81%)
4+
// #2022_07_14_Time_11_ms_(51.18%)_Space_52.7_MB_(22.45%)
55

66
import java.util.HashMap;
7-
import java.util.Map;
87

98
public class Solution {
109
public boolean hasGroupsSizeX(int[] deck) {
11-
if (deck.length < 2) {
12-
return false;
13-
}
14-
Map<Integer, Integer> mapReps = new HashMap<>();
15-
for (int card : deck) {
16-
if (!mapReps.containsKey(card)) {
17-
mapReps.put(card, 1);
10+
HashMap<Integer, Integer> hmap = new HashMap<>();
11+
for (int i = 0; i < deck.length; i++) {
12+
if (hmap.containsKey(deck[i])) {
13+
hmap.put(deck[i], hmap.get(deck[i]) + 1);
1814
} else {
19-
mapReps.put(card, mapReps.get(card) + 1);
15+
hmap.put(deck[i], 1);
2016
}
2117
}
22-
int num = 0;
23-
int[] arrReps = new int[mapReps.size()];
24-
for (Map.Entry<Integer, Integer> e : mapReps.entrySet()) {
25-
arrReps[num++] = e.getValue();
18+
int x = hmap.get(deck[0]);
19+
for (Integer i : hmap.keySet()) {
20+
x = gcd(x, hmap.get(i));
2621
}
27-
num = arrGCD(arrReps, arrReps.length);
28-
return num > 1;
22+
return x >= 2;
2923
}
3024

3125
private int gcd(int a, int b) {
32-
return b == 0 ? a : gcd(b, a % b);
33-
}
34-
35-
private int arrGCD(int[] arr, int n) {
36-
int result = arr[0];
37-
for (int i = 1; i < n; i++) {
38-
result = gcd(arr[i], result);
26+
if (b == 0) {
27+
return a;
3928
}
40-
return result;
29+
return gcd(b, a % b);
4130
}
4231
}

0 commit comments

Comments
 (0)