반응형
https://leetcode.com/problems/find-the-minimum-and-maximum-number-of-nodes-between-critical-points
마지막 크리티컬 포인트와 첫 크리티컬 포인트 사이의 거리가 maximum distance,
현재 크리티컬 포인트와 이전 크리티컬 포인트 사이의 minimum distance 입니다.
링크드리스트를 순회하며 위 값을 구해줍니다.
class Solution {
public:
vector<int> nodesBetweenCriticalPoints(ListNode* head) {
ListNode *cur = head, *prv = NULL;
int curIdx = 0, startIdx = -1, lastIdx = -1;
int minDistance = INT_MAX;
while(cur) {
if(isCriticalPoint(prv, cur, cur->next)) {
if(startIdx == -1) startIdx = curIdx;
if(lastIdx != -1) minDistance = min(minDistance, curIdx - lastIdx);
lastIdx = curIdx;
}
curIdx++;
prv = cur;
cur = cur->next;
}
if (startIdx == lastIdx) {
return {-1, -1};
}
return {minDistance, lastIdx - startIdx};
}
bool isCriticalPoint(ListNode* prv, ListNode* node, ListNode* nxt) {
if(!prv || !nxt) return false;
return node->val > prv->val && node->val > nxt->val
|| node->val < prv->val && node->val < nxt->val;
}
};
반응형
'기록' 카테고리의 다른 글
LeetCode 2181. Merge Nodes in Between Zeros (0) | 2024.07.06 |
---|---|
LeetCode 2582. Pass the Pillow (0) | 2024.07.06 |
LeetCode 2285. Maximum Total Importance of Roads (0) | 2024.06.30 |
LeetCode 1791. Find Center of Star Graph (0) | 2024.06.29 |
LeetCode 2192. All Ancestors of a Node in a Directed Acyclic Graph (0) | 2024.06.29 |