摘要: 1、链表中是否有环 如果链表中存在环的话,则遍历链表时无法通过观察指针是否为null来判断链表是否结束。 判断链表中是否存在环,需要引入快慢指针(slow 和 fast),slow每次走一步,fast每次走两步, 如果slow和fast会相遇,则说明链表中存在环,否则不存在。 2、链表中环的入口结点 阅读全文
posted @ 2016-05-27 15:39 沧浪少年 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 对于O(1)的空间复杂度要求,不能对链表进行复制等操作,双指针法对处理该类问题比较有效。 同时由于链表头结点的特殊性,可以考虑引入一个空的头结点来辅助操作。 阅读全文
posted @ 2016-05-26 17:39 沧浪少年 阅读(1187) 评论(0) 推荐(0) 编辑
摘要: 对于单链表来说,判断回文最简单的方法就是遍历链表,将链表中的元素复制到数组中,然后对数组进行判断是否是回文数组,但是这不符合O(1)的空间复杂度。 由于空间复杂度的要求,需要就地操作链表,不能开辟多余的空间来进行处理,因此引入快慢指针来进行操作。 快慢指针: slow 和 fast,每次slow指针 阅读全文
posted @ 2016-05-26 11:02 沧浪少年 阅读(2784) 评论(0) 推荐(0) 编辑
摘要: Floyd算法是一种用于寻找给定的加权图中多源点之间最短路径的算法,算法流程如下所示: 1:从任意一条单边路径开始。所有两点之间的距离是边的权,如果两点之间没有边相连,则权为无穷大。 2:对于每一对顶点 u 和 v,看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比已知的路径更短。如果是更新 阅读全文
posted @ 2016-03-08 11:08 沧浪少年 阅读(350) 评论(0) 推荐(0) 编辑