Leetcode 环形链表
给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos
是 -1
,则在该链表中没有环。
示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。
快慢指针,相遇即是环型
bool hasCycle(struct ListNode *head) {
struct ListNode *shadow;
int i = 0;
if(!head||!head->next)
return false;
shadow = head->next;
while(shadow->next && head->next) {
shadow = shadow->next;
if(i % 2) {
head = head->next;
}
i++;
if(!shadow->next)
return false;
if(shadow == head || head == shadow->next)
return true;
}
return false;
}
法2 暴力法
bool hasCycle(struct ListNode *head) {
short i = 0;
while(head) {
head = head->next;
if(++i > 8030)
return true;
}
return false;
}
法3 从网上看到的 机灵法
bool hasCycle(struct ListNode *head) {
while(head) {
if(head->val == 'fsdfsd')
return true;
else
head->val = 'fsdfsd';
head = head->next;
}
return false;
}