买卖股票的最佳时机

一、题目。

给你一个链表的头节点 head ,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。

如果链表中存在环 ,则返回 true 。 否则,返回 false 。

示例 1:

输入:head = 3,2,0,-4, pos = 1

输出:true

解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = 1,2, pos = 0

输出:true

解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = 1, pos = -1

输出:false

解释:链表中没有环。

提示:

链表中节点的数目范围是 0, 10\^4

-10^5 <= Node.val <= 10^5

pos 为 -1 或者链表中的一个 有效索引 。

二、代码。

java 复制代码
public class Solution {
   public boolean hasCycle(ListNode head) {
       if(head==null||head.next==null){
            return false;
        }
       ListNode fast=head.next;
        ListNode slow=head;
        while(slow!=fast)
        {
            if(fast==null|| fast.next == null){
                return false;
            }
            fast=fast.next.next;
            slow=slow.next;
     
        }
        return true;

    }
}

双指针法,有快指针和慢指针,如果慢指针永远追不上快指针,就说明没有环,反之就说明有环,这种方法有一个很形象的名字叫做龟兔赛跑法。

时间复杂度为O(n),因为这种方法就相当于遍历了一遍链表。

空间复杂度为O(1),就只用了两个指针的空间

java 复制代码
 HashSet<ListNode> listNodes = new HashSet<>();
       while (head!=null)
        {
           if(!listNodes.add(head)){
                return true;
            }
            head=head.next;
        }
       return false;

利用hashset的不可重复性,要是重复add就会返回false。

时间复杂度:O(N),其中 N 是链表中的节点数。最坏情况下我们需要遍历每个节点一次。

空间复杂度:O(N),其中 N 是链表中的节点数。主要为哈希表的开销,最坏情况下我们需要将每个节点插入到哈希表中一次。

相关推荐
怕浪猫4 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i6 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J6 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
leikooo6 小时前
用餐厅和盘子理解栈和堆
java·数据结构·链表·rust
weixin_307779137 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
Ivanqhz8 小时前
激活函数在 Transformer 中的作用及各种变体简述
java·linux·数据库·人工智能·深度学习
朝朝辞暮i8 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
沙漠之主8 小时前
C++编程教学设计资料:从入门到实战的完整课程方案
java·前端·c++
朝朝辞暮i8 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
FPGA小徐8 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络