Đuôi Chuột Ngoáy Lọ Mỡ
Senior Member
C++:
vector<int> nodesBetweenCriticalPoints(ListNode* head) {
vector<int> ans(2, int(1e6));
vector<int> tmp;
ListNode *prev;
ListNode *cur;
ListNode *next;
prev = head;
cur = prev->next;
next = cur->next;
int i = 2;
if (cur->next == nullptr) return {-1, -1};
while(next != nullptr) {
if ((cur->val > prev->val && cur->val > next->val) || (cur->val < prev->val && cur->val < next->val)) {
tmp.push_back(i);
}
prev = prev->next;
cur = cur->next;
next = next->next;
++i;
}
int n = tmp.size();
if(n < 2) return {-1, -1};
if(n == 2) return {tmp[1] - tmp[0], tmp[1] - tmp[0]};
ans[1] = tmp[n-1] - tmp[0];
for(int i = 1; i < n; i++) {
ans[0] = min(ans[0], tmp[i] - tmp[i - 1]);
}
return ans;
}



