Advertisement

已知链表,请检测是否存在环,并将入口节点作为结果返回

阅读量:

基本思路:我们通过设置两个指针来进行遍历操作。
主要方法:通过设置两个指针来进行遍历操作。
其中一种方法是将两个不同的变量分别作为快慢指针:

  • 快速遍历的变量每次会移动两位位置
  • 缓慢遍历的变量则每次仅移动一位位置
    这样一来,在非循环链表的情况下:
  • 快速遍历的变量将会最先抵达列表末端
    而当链表中存在一个循环时:
  • 快慢两个变量将会在某一点相遇

时间复杂度? O(N)
空间复杂度?O(1)

在这里插入图片描述

具体实现代码:

复制代码
    /** * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
    public boolean has

全部评论 (0)

还没有任何评论哟~