机器学习知识点一
链表中环的入口结点
http://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4
注意
- 找到meet就跳出
- !的位置
- 双指针fast有可能在两个环节跳出
- 最后还需判断meet是否为空(==)
- 最后循环找到那个交点即可
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
*/
class Solution {
public:
ListNode* EntryNodeOfLoop(ListNode* pHead) {
ListNode* slow = pHead;
ListNode* fast = pHead;
ListNode* meet = NULL;
if(!pHead){
return NULL;
}
while(fast){
slow = slow->next;
fast = fast->next;
if(!fast){
return NULL;
}
fast = fast->next;
if(fast == slow){
meet = fast;
break;
}
}
if(meet==NULL){
return NULL;
}
while(pHead&&meet){
if(pHead==meet){
return meet;
}
pHead= pHead->next;
meet = meet->next;
}
return NULL;
}
};算法解析 文章被收录于专栏
这里主要是算法岗的自我思路总结
