Skip to content

Commit f1062f6

Browse files
committed
feat: content leetcode biweek52
1 parent 68b5db7 commit f1062f6

4 files changed

+98
-0
lines changed

Diff for: contest/leetcode_biweek_57/[editing]leetcode_1943_Describe_the_Painting.java

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// TLE:
2+
// todo-qualify
3+
class Solution {
4+
public int[] canSeePersonsCount(int[] heights) {
5+
int size = heights.length;
6+
int[] ret = new int[size];
7+
8+
int[] leftMax = new int[size];
9+
leftMax[size - 1] = heights[size - 1];
10+
for (int i = size - 2; i >= 0; i--) {
11+
leftMax[i] = Math.max(heights[i], leftMax[i + 1]);
12+
}
13+
14+
for (int i = size - 1; i >= 0; i--) {
15+
int betweenMax = 0, canSeeCount = 0;
16+
for (int j = i + 1; j < size; j++) {
17+
if (heights[i] > betweenMax && heights[j] > betweenMax) {
18+
canSeeCount++;
19+
betweenMax = Math.max(betweenMax, heights[j]);
20+
if (heights[j] >= heights[i] || heights[j] >= leftMax[j] || betweenMax >= leftMax[j]) {
21+
break;
22+
}
23+
}
24+
}
25+
ret[i] = canSeeCount;
26+
}
27+
28+
return ret;
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public boolean areOccurrencesEqual(String s) {
3+
HashMap<Character, Integer> record = new HashMap<>();
4+
for (char c: s.toCharArray()) {
5+
record.merge(c, 1, Integer::sum);
6+
}
7+
int time = 0;
8+
for (char c: record.keySet()) {
9+
if (time == 0) {
10+
time = record.get(c);
11+
} else {
12+
if (record.get(c) != time) {
13+
return false;
14+
}
15+
}
16+
}
17+
18+
return true;
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
class Solution {
2+
public int smallestChair(int[][] times, int targetFriend) {
3+
int peopleNum = times.length;
4+
int targetComeTime = times[targetFriend][0], targetLeaveTime = times[targetFriend][1];
5+
Arrays.sort(times, new Comparator<int[]>() {
6+
@Override
7+
public int compare(int[] o1, int[] o2) {
8+
return o1[0] - o2[0];
9+
}
10+
});
11+
List<Integer> chairs = new ArrayList<>();
12+
13+
for (int i = 0; i < peopleNum; i++) {
14+
int comeTime = times[i][0], leaveTime = times[i][1];
15+
// 清理 leave
16+
List<Integer> toRemoveIndex = new LinkedList<>();
17+
for (int j = 0; j < chairs.size(); j++) {
18+
if (chairs.get(j) <= comeTime) {
19+
toRemoveIndex.add(j);
20+
}
21+
}
22+
for (int toRemove: toRemoveIndex) {
23+
chairs.set(toRemove, 0);
24+
}
25+
26+
int canSitIndex = -1;
27+
for (int j = 0; j < chairs.size(); j++) {
28+
if (chairs.get(j) == 0) {
29+
canSitIndex = j;
30+
break;
31+
}
32+
}
33+
if (canSitIndex == -1) {
34+
chairs.add(leaveTime);
35+
if (comeTime == targetComeTime && leaveTime == targetLeaveTime) {
36+
return chairs.size() - 1;
37+
}
38+
} else {
39+
chairs.set(canSitIndex, leaveTime);
40+
if (comeTime == targetComeTime && leaveTime == targetLeaveTime) {
41+
return canSitIndex;
42+
}
43+
}
44+
}
45+
46+
return -1;
47+
}
48+
}

0 commit comments

Comments
 (0)