LeetCode141之环形链表(Java实现)

编程入门 行业动态 更新时间:2024-10-09 03:23:40

LeetCode141之<a href=https://www.elefans.com/category/jswz/34/1760338.html style=环形链表(Java实现)"/>

LeetCode141之环形链表(Java实现)

一、题目

 

二、两种解题思路及代码实现

 ①龟兔赛跑解法,快指针跳两个,慢指针跳一个,若两指针遇到一样,则有环

       时间复杂度:O(n)

       空间复杂度:O(1)

    /*** 龟兔赛跑解法 ---- 李小豪* @param head* @return*/public boolean hasCycle1(ListNode head) {ListNode target1 = head;ListNode target2 = head;if (target1==null||target1.next == null || target1.next.next == null) {return Boolean.FALSE;}while (target2.next != target1.next.next) {target1 = target1.next.next;target2 = target2.next;if ( target1.next == null || target1.next.next == null) {return Boolean.FALSE;}}return Boolean.TRUE;}

 ②使用Set将走过的节点保存起来,同时判断是否存在走过相同节点,若存在则为环

       时间复杂度:O(n)

       空间复杂度:O(n)

    /*** 中间Set解法 ---- 李小豪* @param head* @return*/public boolean hasCycle2(ListNode head) {Set<ListNode> listNodes=new LinkedHashSet<>();ListNode target=head;while(target.next!=null){if(listNodes.contains(target)){return Boolean.TRUE;}listNodes.add(target);target=target.next;}return Boolean.FALSE;}

三、基础类

public class ListNode {public int val;public ListNode next;public ListNode(int x) {val = x;next = null;}
}

 

四、成功截图

测试结果还行

五、个人目标

接下来几个月将以前多学的Leetcode的题目在刷一遍,算法再学一遍,加油,每天升一级,愿未来努力继续。

更多推荐

LeetCode141之环形链表(Java实现)

本文发布于:2024-02-14 11:22:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763171.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:环形   链表   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!