【LeetCode】141. Linked List Cycle

 

正文

Difficulty:easy

 More:【目录】LeetCode Java实现

Description

https://leetcode.com/problems/linked-list-cycle/

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

Intuition

Use two pointers at different speed: the slow pointer moves one step at a time while the faster moves two steps at a time. 

  1) if the fast pointer meets the slow one, there is a cycle in the linked list;

  2) if the fast pointer reaches the end(null), there is no cycle in the list.

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
public boolean hasCycle(ListNode head) {
    if(head==null)
        return false;
    int fast=head;
    int slow=head;
    while(fast.next!=null && fast.next.next!=null){
        slow=slow.next;
        fast=fast.next.next;
        if(fast==slow)
            return true;
    }
    return false;
}

 

Complexity

Time complexity : O(n)

Space complexity : O(1)

 

What I've learned

1. Have a better understanding of the use of two pointers.

 

  More:【目录】LeetCode Java实现

 

posted @   华仔要长胖  阅读(327)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
阅读排行:
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验
点击右上角即可分享
微信分享提示