当前位置:网站首页>BM7 list entry in central

BM7 list entry in central

2022-08-10 22:31:00 Rice white

Review questions:

If the second linked list given is not empty, there must be a cycle.

Let's fix two special cases first:

{1}, {} // no loop, return null directly

  {}, {2}         //There is a loop, return any node of the second linked list

ok...okay

We look at the function input given by the title, there is only one parameter, then pHead has linked the two linked lists.

Well, I'm overthinking it, it seems it's a simple matter of finding the point of entry....

Hee hee, sorry, sorry....

As for Mao, I will explain it in such simple words, not because the algorithm is inherently abstract and difficult to understand, it will be easier to understand and empathize with this expression...Woohoo, it's really hard work, it's not easy to create, please pay attention,,, hee hee


How to judge whether there is a ring:

It is ok through the speed pointer

Fast pointer, take two steps at a time, slow pointer one step at a time (in fact, I feel that the fast pointer is ok as long as it is faster than the slow pointer)

1. Assuming there is no ring, can it be understood that the two pointers start from the same starting point and march along an endless road

2. Assuming there is a ring, how to understand it?

Suppose that one day you secretly go out to surf the Internet, your father finds out, and goes to the Internet cafe to catch you.Then you run to the school playground, stop, and you say to your dad, "Stupid old man, you can't catch me"....

You and your dad start at the same starting point at the same time (both from your internet cafe seat), your dad is twice as fast as you, and then when you run to the playground, you run along the playground.Your dad is chasing you.As long as your dad is faster than you, he will definitely be able to catch you.How to say, I don't know how to understand Bo (if you have any questions, you can send a private message)

How to find the entry node:

According to XXX mathematicians, Forgive my ignorance, I just know the theory....

The distance from the point to the entry point where fast and last meet is the same as the distance from the starting point to the entry point


The idea is analyzed, and the code is uploaded

Don't tell me you can't write code, just adjust slowly....You can learn from it, but not copy it

/*struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public:ListNode* EntryNodeOfLoop(ListNode* pHead) {ListNode *fast = nullptr;ListNode *last = nullptr;ListNode *p = nullptr;if(pHead->next == nullptr || pHead->next->next == nullptr){return p;}fast = pHead->next->next;last = pHead->next;while(1){if(fast == nullptr || fast == last){break;}if(fast->next != nullptr){fast = fast->next->next;}else{fast = nullptr;}last = last->next;}if(fast == last){p = pHead;while(1){if(p == last){break;}p = p->next;last = last->next;}}return p;}};

Daily complaints:

Write a question for three minutes, and write a blog question and solve it for ten years

原网站

版权声明
本文为[Rice white]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/222/202208102148592788.html