알고리즘 문제: 링크 가 링 링크 인지 아 닌 지 판단 합 니 다.
이 문제 에 부 딪 히 면 나 는 매우 웃긴다 고 생각한다. 인상 에 긁 힌 적 이 있 는데, 아마도 leetcode 의 원제 일 것 이다.나 는 당시 에 분석의 방향 을 향 해 달 려 가 생각해 보 았 다. 이것 은 직접적 으로 결과 가 너무 경솔 해서 차라리 과정 을 이야기 하 는 것 이 낫 겠 다.
우선, 링크 라 는 개념 을 알 고 있 는 지, 아마 아래 와 유사 한 데이터 구조 일 것 이다.
struct ListNode{
Node *next;
int data;
};
그 다음으로 고리 의 문제.이 고 리 는 어떻게 계산 합 니까?내 생각 은 기록 을 하고 뒤로 옮 겨 다 니 며 이전에 저 장 된 기록 을 찾 으 면 고리 가 있다 고 판단 하 는 것 이다.코드 는 다음 과 같 습 니 다.
bool hasCycle(ListNode *head) {
unordered_set seen;
while (head != nullptr) {
if (seen.count(head)) {
return true;
}
seen.insert(head);
head = head->next;
}
return false;
}
저 는 OK 라 고 생각 합 니 다. 일이 끝 난 후에 저 는 leetcode 의 문제 풀이 기록 을 보 았 습 니 다. 빠 르 고 느 린 지침 법 도 사 용 했 을 것 입 니 다. 코드 는 다음 과 같 습 니 다.
bool hasCycle(ListNode *head) {
// head
ListNode* faster{ head }; //
ListNode* slower{ head }; //
if (head == NULL) // ,
return false;
while (faster != NULL && faster->next != NULL) {
faster = faster->next->next; //
slower = slower->next; //
if (faster == slower) //
return true; // ,
}
return false; // , ,
}
사실 코드 가 좀 많아 보이 지만 원리 가 알 고 적용 범위 가 넓 습 니 다.힘 내, 아직 공부 하고 있 는 너 에 게 줄 게!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.