题目意思:链表有环,返回true,否则返回false思路:两个指针,一快一慢,能相遇则有环,为空了没环 ps:很多链表的题目:都可以采用这种思路 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * ...
分类:
其他好文 时间:
2015-06-14 16:30:04
阅读次数:
133
有时候处理链表相关问题的时候,定义“快指针”和“慢指针“的方法有时候会极大地提高时间效率。下面是常见的几种使用这个方法的情况。假设不考虑异常输入的情况。判断一个链表是否有环 定义两个指针,快指针步长为2,慢指针步长为1.同时从链表头开始出发。如果链表中有环那么他们必然相遇。 1 bool ha...
分类:
其他好文 时间:
2015-05-29 21:44:42
阅读次数:
134
针对leetcode上面的20多个链表的算法题,总结了一下链表操作中的几个技巧。 1. 快慢指针 快慢指针是在遍历链表的时候使用两个指针,快指针每次比慢指针多跑一步或多步,或者快指针先跑n步。这在查找倒数第n个结点、找中间结点时只需要遍历一次,在判断链表是否有环时不需要额外的空间。例如,查找一个链表...
分类:
其他好文 时间:
2015-05-29 13:37:30
阅读次数:
135
求有环单链表中的环长、环起点、链表长1.判断单链表是否有环 使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。 就是所谓的追击相遇问题: 2.求有环单链...
分类:
其他好文 时间:
2015-05-13 09:57:13
阅读次数:
108
上一节结束后,我们已经可以判断链表是否有环了,如果无环,那么按照前两节所讲的方法去判断链表是否相交以及获取相交结点,如果有环呢?怎么判断是否相交?...
分类:
编程语言 时间:
2015-04-27 09:47:19
阅读次数:
160
用快慢指针法,慢指针一次走一步,快指针一次走两步,如果有环必定相遇
这里给出C++和Python 版
Python:
"""
Definition of ListNode
class ListNode(object):
def __init__(self, val, next=None):
self.val = val
self.next = n...
分类:
其他好文 时间:
2015-04-19 14:42:09
阅读次数:
120
判断单链表是否有环
使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。...
分类:
其他好文 时间:
2015-04-03 21:06:47
阅读次数:
145
一、判断单链表是否有环1、遍历链表遍历链表,将已经访问过的结点,设置为已访问,如果访问同一结点两次,则说明有环,时间O(n),空间O(n)。2、链表反转遍历链表,将访问的结点指针反向。如果存在环,反转后next指向原链表头,但链表反转会破坏链表的结构,反转需要注意缓存当前结点的下一结点,时间O(n)...
分类:
其他好文 时间:
2015-03-20 06:47:08
阅读次数:
152
Given a linked list, determine if it has a cycle in it.判断某个链表是否有环。方法一:用一个hashmap来存放访问过的节点,通过比较当前节点是否存在map中来判断是否有环:/** * Definition for singly-linked l...
分类:
其他好文 时间:
2015-03-17 21:45:57
阅读次数:
131
struct LinkedListNode
{
int data;
LinkedListNode* next;
};
bool IsCircle(LinkedListNode* head)
{
if (head == NULL || head->next)
{
return false;
}
LinkedListNode* p = head;
Link...
分类:
其他好文 时间:
2015-03-15 12:23:23
阅读次数:
97