Skip to content

Commit f414760

Browse files
committed
Added 2 solutions
1 parent 22d63e2 commit f414760

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
class Solution {
2+
public int[] numSmallerByFrequency(String[] queries, String[] words) {
3+
List<Integer> list = new ArrayList<>();
4+
for (String word : words) {
5+
list.add(getMinWordFreq(word));
6+
}
7+
Collections.sort(list);
8+
int[] ans = new int[queries.length];
9+
for (int i = 0; i < queries.length; i++) {
10+
int minCount = getMinWordFreq(queries[i]);
11+
int idx = 0;
12+
ans[i] = binarySearch(minCount, list);
13+
}
14+
return ans;
15+
}
16+
17+
private int binarySearch(int target, List<Integer> list) {
18+
int left = 0;
19+
int right = list.size() - 1;
20+
while (left <= right) {
21+
int mid = (left + right) / 2;
22+
if (list.get(mid) <= target) {
23+
left = mid + 1;
24+
}
25+
else {
26+
right = mid - 1;
27+
}
28+
}
29+
30+
return list.size() - left;
31+
}
32+
33+
private int getMinWordFreq(String word) {
34+
int[] counter = new int[26];
35+
for (char c : word.toCharArray()) {
36+
counter[c - 'a']++;
37+
}
38+
for (int i = 0; i < 26; i++) {
39+
if (counter[i] != 0) {
40+
return counter[i];
41+
}
42+
}
43+
return 0;
44+
}
45+
}

Easy/Diet Plan Performance.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
int points;
3+
public int dietPlanPerformance(int[] calories, int k, int lower, int upper) {
4+
points = 0;
5+
int totalCal = 0;
6+
int start = 0;
7+
for (int i = 0; i < k; i++) {
8+
totalCal += calories[i];
9+
}
10+
for (int i = k; i < calories.length; i++) {
11+
updatePoints(totalCal, lower, upper);
12+
totalCal -= calories[start++];
13+
totalCal += calories[i];
14+
}
15+
updatePoints(totalCal, lower, upper);
16+
return points;
17+
}
18+
19+
private void updatePoints(int currCal, int lower, int upper) {
20+
if (currCal < lower) {
21+
points--;
22+
}
23+
if (currCal > upper) {
24+
points++;
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)