摘要: 那怎么求出环的长度呢? 思路:这里面,我们需要先利用上一个题目的hasCycle方法(判断链表是否有环的那个方法),这个方法的返回值是 boolean型,但是现在要把这个方法稍做修改,让其返回值为相遇的那个结点。然后,我们拿到这个相遇的结点就好办了,这个结点肯定是在环里嘛,我们可以让 这个结点对应的 阅读全文
posted @ 2017-05-16 20:53 暖阳g 阅读(1455) 评论(0) 推荐(0) 编辑
摘要: 判断单链表是否有环: 这里也是用到两个指针,如果一个链表有环,那么用一个指针去遍历,是永远走不到头的。 因此,我们用两个指针去遍历:first指针每次走一步,second指针每次走两步,如果first指针和second指针相遇,说明有环。时间复杂度为O (n)。 方法 完整版代码:(包含测试部分) 阅读全文
posted @ 2017-05-16 20:00 暖阳g 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 对于这种颠倒顺序的问题, 我们应该就会想到栈,后进先出。 所以,这一题要么自己使用栈,要么让系统使用栈,也就是递归。注意链表为空的情况。时间复杂度为O(n) 注:不要想着先将单链表反转,然后遍历输出,这样会破坏链表的结构,不建议。 方法1:(自己新建一个栈) 方法2:(使用系统的栈:递归,代码优雅简 阅读全文
posted @ 2017-05-16 15:41 暖阳g 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 1定义 单链表node的数据结构定义如下: 2 方法1:就地反转法 2.1 思路 把当前链表的下一个节点pCur插入到头结点dummy的下一个节点中,就地反转。 dummy->1->2->3->4->5的就地反转过程: 2.2 解释 1初始状态 2 过程 pCur是需要反转的节点。 伪代码 3 循环 阅读全文
posted @ 2017-05-16 11:10 暖阳g 阅读(451) 评论(0) 推荐(1) 编辑