java: add «916. Word Subsets»
URL: https://leetcode.com/problems/word-subsets/ Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
07f0ad8512
commit
6713133429
1 changed files with 14 additions and 9 deletions
|
@ -9,14 +9,18 @@ class Solution {
|
|||
return freqs;
|
||||
}
|
||||
|
||||
private static boolean isUniversal(int[][] freqs2, String w) {
|
||||
private static void merge(int[] cum, int[] freqs) {
|
||||
for (var i = 0; i < 26; ++i) {
|
||||
cum[i] = Math.max(cum[i], freqs[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isUniversal(int[] freqs2, String w) {
|
||||
var freqs = getFreqs(w);
|
||||
|
||||
for (var f : freqs2) {
|
||||
for (var i = 0; i < 26; ++i) {
|
||||
if (f[i] > freqs[i]) {
|
||||
return false;
|
||||
}
|
||||
for (var i = 0; i < 26; ++i) {
|
||||
if (freqs2[i] > freqs[i]) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,11 +28,12 @@ class Solution {
|
|||
}
|
||||
|
||||
public List<String> wordSubsets(String[] words1, String[] words2) {
|
||||
var freqs2 = new int[words2.length][];
|
||||
var cumulativeFreqs = new int[26];
|
||||
for (var i = 0; i < words2.length; ++i) {
|
||||
freqs2[i] = getFreqs(words2[i]);
|
||||
var freqs = getFreqs(words2[i]);
|
||||
merge(cumulativeFreqs, freqs);
|
||||
}
|
||||
|
||||
return Arrays.stream(words1).filter(w -> isUniversal(freqs2, w)).toList();
|
||||
return Arrays.stream(words1).filter(w -> isUniversal(cumulativeFreqs, w)).toList();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue