Skip to content

Commit f82c7fe

Browse files
add 2058
1 parent b8bf1d8 commit f82c7fe

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ _If you like this project, please leave me a star._ ★
88

99
| # | Title | Solutions | Video | Difficulty | Tag
1010
|-----|----------------|---------------|--------|-------------|-------------
11+
|2058|[Find the Minimum and Maximum Number of Nodes Between Critical Points](https://leetcode.com/problems/find-the-minimum-and-maximum-number-of-nodes-between-critical-points/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2058.java) ||Medium||
1112
|2057|[Smallest Index With Equal Value](https://leetcode.com/problems/smallest-index-with-equal-value/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2057.java) ||Easy||
1213
|2055|[Plates Between Candles](https://leetcode.com/problems/plates-between-candles/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2055.java) ||Medium||
1314
|2054|[Two Best Non-Overlapping Events](https://leetcode.com/problems/two-best-non-overlapping-events/)|[Java](../master/src/main/java/com/fishercoder/solutions/_2054.java) ||Medium||
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.fishercoder.solutions;
2+
3+
import com.fishercoder.common.classes.ListNode;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class _2058 {
9+
public static class Solution1 {
10+
public int[] nodesBetweenCriticalPoints(ListNode head) {
11+
List<Integer> list = new ArrayList<>();
12+
while (head != null) {
13+
list.add(head.val);
14+
head = head.next;
15+
}
16+
List<Integer> criticalPts = new ArrayList<>();
17+
for (int i = 1; i < list.size() - 1; i++) {
18+
if (list.get(i) > list.get(i - 1) && list.get(i) > list.get(i + 1)) {
19+
criticalPts.add(i);
20+
} else if (list.get(i) < list.get(i - 1) && list.get(i) < list.get(i + 1)) {
21+
criticalPts.add(i);
22+
}
23+
}
24+
if (criticalPts.size() < 2) {
25+
return new int[]{-1, -1};
26+
}
27+
int min = Integer.MAX_VALUE;
28+
for (int i = 0; i < criticalPts.size() - 1; i++) {
29+
min = Math.min(min, criticalPts.get(i + 1) - criticalPts.get(i));
30+
}
31+
int size = criticalPts.size();
32+
return new int[]{min, criticalPts.get(size - 1) - criticalPts.get(0)};
33+
}
34+
}
35+
}

0 commit comments

Comments
 (0)