本文主要是介绍LeetCode:141和142,环形链表之追及相遇和快慢指针的运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这两个题是相关联的,主要做法为哈希和快慢指针,当然像博主我,不看解析只会O(n^2)的暴力遍历,太惨了,不过,快慢指针还是很好理解的,是一个追及的问题,
目录
题目:
编辑 快慢指针解法原理:
代码LeetCode:141:
每日表情包:
题目:
快慢指针解法原理:
代码LeetCode:141:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
bool hasCycle(struct ListNode *head) {struct ListNode* pfast = head, * pslow = head;while(pfast && pfast->next){pfast = pfast->next->next;pslow = pslow->next;if(pfast == pslow){return true;}}return false;
}
代码LeetCode:142:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode *detectCycle(struct ListNode *head) {struct ListNode* pfast = head, * pslow = head;while(pfast && pfast->next){pfast = pfast->next->next;pslow = pslow->next;if(pfast == pslow){while(pfast != head){pfast = pfast->next;head = head->next;}return head;}}return NULL;
}
每日表情包:
点点赞吧 ~ 可怜可怜孩子。
这篇关于LeetCode:141和142,环形链表之追及相遇和快慢指针的运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!