BM6. 判断链表中是否有环
描述
示例1
输入:
{3,2,0,-4},1
输出:
true
说明:
第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1(注:头结点为位置0),即-4->2存在一个链接,组成传入的head为一个带环的链表,返回true示例2
输入:
{1},-1
输出:
false
说明:
第一部分{1}代表一个链表,-1代表无环,组成传入head为一个无环的单链表,返回false示例3
输入:
{-1,-7,7,-4,19,6,-9,-5,-2,-5},6
输出:
true
C 解法, 执行用时: 3ms, 内存消耗: 684KB, 提交时间: 2021-09-11
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 * @return bool布尔型 */ bool hasCycle(struct ListNode* head ) { // write code here struct ListNode *slow = head, *fast = head; while ( fast && fast->next) { slow = slow->next; fast = fast->next->next; if (slow == fast) { return true; } } return false; }
C 解法, 执行用时: 3ms, 内存消耗: 688KB, 提交时间: 2021-07-16
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 * @return bool布尔型 */ #include <stdbool.h> bool hasCycle(struct ListNode* head ) { if(head == NULL){ return false; } struct ListNode *pre = head->next; struct ListNode *lag = head; while(pre){ if(lag == pre){ return true; } lag = lag->next; pre = pre->next; if(pre){ pre = pre->next; } } return false; }
C 解法, 执行用时: 3ms, 内存消耗: 696KB, 提交时间: 2021-09-15
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 * @return bool布尔型 */ #include<stdbool.h> bool hasCycle(struct ListNode* head ) { // write code here、 struct ListNode *slow, *fast; slow = fast = head; while(slow && fast){ slow = slow->next; if(fast->next) fast = fast->next->next; else return false; if(fast == slow) return true; } return false; }
C 解法, 执行用时: 3ms, 内存消耗: 696KB, 提交时间: 2021-09-12
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 * @return bool布尔型 */ int hasCycle(struct ListNode* head ) { // write code here struct ListNode * first; struct ListNode * second; first = head; second = head; while(first != NULL&& first->next != NULL && second !=NULL && second->next !=NULL) { first = first -> next; second = second ->next ->next; if(first == second) { return 1; } } return 0; }
C 解法, 执行用时: 3ms, 内存消耗: 768KB, 提交时间: 2021-10-23
/** * struct ListNode { * int val; * struct ListNode *next; * }; */ /** * * @param head ListNode类 * @return bool布尔型 */ bool hasCycle(struct ListNode* head ) { struct ListNode *a,*b; a=b=head; if(head==NULL){ return false; } while(1){ a=a->next; b=b->next; if(b==NULL){ break; } b=b->next; if(b==NULL){ break; } if(a==b){ return true; } } return false; }