Skip to content

Commit 55fb355

Browse files
committed
Time: 164 ms (67.35%), Space: 119.9 MB (11.59%) - LeetHub
1 parent 1ba0044 commit 55fb355

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* struct ListNode {
4+
* int val;
5+
* ListNode *next;
6+
* ListNode() : val(0), next(nullptr) {}
7+
* ListNode(int x) : val(x), next(nullptr) {}
8+
* ListNode(int x, ListNode *next) : val(x), next(next) {}
9+
* };
10+
*/
11+
class Solution {
12+
public:
13+
vector<int> nodesBetweenCriticalPoints(ListNode* head) {
14+
ListNode* prv = nullptr;
15+
ListNode* cur = head;
16+
ListNode* nxt = head->next;
17+
vector<int> cPoints;
18+
int pos = 0;
19+
while (nxt) {
20+
if (prv && nxt) {
21+
if (prv->val < cur->val && cur->val > nxt->val) {
22+
cPoints.push_back(pos);
23+
}
24+
if (prv->val > cur->val && cur->val < nxt->val) {
25+
cPoints.push_back(pos);
26+
}
27+
}
28+
prv = cur;
29+
cur = nxt;
30+
nxt = nxt->next;
31+
pos++;
32+
}
33+
vector<int> ans{-1, -1};
34+
if (cPoints.size() < 2) return ans;
35+
ans[0] = 1e9;
36+
for (int i = 0; i + 1 < cPoints.size(); i++) {
37+
ans[0] = min(ans[0], cPoints[i + 1] - cPoints[i]);
38+
}
39+
ans[1] = cPoints.back() - cPoints.front();
40+
return ans;
41+
}
42+
};

0 commit comments

Comments
 (0)