【面试题】判断链表中是否有环
来源:互联网 发布:win10关闭网络唤醒 编辑:程序博客网 时间:2024/05/03 17:54
1. 快慢指针
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: bool hasCycle(ListNode *head) { ListNode* fast=head,*slow=head; if(!head) return false; while(fast->next && fast->next->next) { fast=fast->next->next; slow=slow->next; if(fast==slow) return true; } return false; }};2. 保存已经遍历节点的地址,移动下一个节点时,判断地址是否存在过
class Solution {public: bool hasCycle(ListNode *head) { if(!head) return false; set<ListNode*> se; while(head) { if(se.find(head)!=se.end()) return true; else se.insert(head); head=head->next; } return false; }};
3. 如果可以改变链表的结构,将后一个指针指向前一个节点,如果最后回到初始节点,说明有环
class Solution {public: bool hasCycle(ListNode *head) { if(!head) return false; ListNode* start=head; ListNode* pcurr=head; ListNode* pnext=head->next; while(pnext) { if(pnext==start) return true; ListNode* temp=pnext->next; pnext->next=pcurr; pcurr=pnext; pnext=temp; } return false; }};
0 0
- 【面试题】判断链表中是否有环
- 百度面试题-判断是否有环
- 华为面试题:怎么判断链表中是否有环?????
- [面试题] 判断一个单链表是否有环
- 常见面试题解析-判断是否有环
- 如何判断一个链表中是否有环(百度面试题)
- 【面试题】-判断单链表是否有环并找到环入口(快慢指针)
- C/C++经典面试题之判断链表是否有环
- 判断链表里面是否有环
- 判断链表中是否有环
- 如何判断单链表里面是否有环?
- 判断一个链表里面是否有环
- 如何判断单链表里面是否有环【转载】
- 如何判断单链表里面是否有环【转载】
- 如何判断单链表里面是否有环
- 如何判断单链表里面是否有环
- 如何判断单链表里面是否有环?
- 如何判断单链表里面是否有环
- Linux内核执行流程
- 学习
- (水)POJ-2676 DFS,数独
- Hadoop 1.x MapReduce 模板类
- window10下qt creator下自定义并使用 基于Qt5.3.2
- 【面试题】判断链表中是否有环
- unity中利用mesh动态创建墙体
- 递归遍历整个目录的代码
- 二叉树的构建和三种遍历算法 (递归实现)
- 归并排序的3种实现
- 面向对象
- 学习笔记--Ajax:JSON格式返回数据
- Spring4.1.4 bean的加载与赋值
- 21. Merge Two Sorted Lists