https://leetcode-cn.com/problems/linked-list-cycle/
import scala.collection.mutable.HashSet
object Solution {
/**
* 哈希表法
*/
def hasCycle(head: ListNode): Boolean = {
if(head == null || head.next == null){
false
}else{
val visted_node = new HashSet[ListNode]()
var flag = true
var prev = head
while(prev != null && flag){
if(visted_node.contains(prev)){
flag = false
}else{
visted_node.append(prev)
prev = prev.next
}
}
!flag
}
}
/**
* 快慢指针法
*/
def hasCycle(head: ListNode): Boolean = {
if(head == null || head.next == null){
false
}else {
var flag = true
var slow = head
var fast = head.next
while(slow != fast && flag){
if(fast == null || fast.next == null){
flag = false
}
if(flag){ //防止指针越界
slow = slow.next
fast = fast.next.next
}
}
flag
}
}
}
相关推荐
VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧)
本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。
Scala数据结构和算法:链表(Linked List)、单链表与双链表、链表介绍、单向链表、双向链表、环形链表、环形链表解决Josephu问题
链表介绍 链表是有序的列表,但是它在内存中是存储如下: 链表在内存中不一定是连续分布. [链表是学习 树,森林,图的基础] // 链表的优点 1. 插入,删除,很快, 缺点是检索速度慢. => 树结构(AVL, 红黑树) 单链表的介绍 单链表(带头结点) 逻辑结构示意图如下 单链表的应用实例 使用带head头的单向链表实现 –水浒英雄排行榜管理 1)完成对英雄人物的增删...
SAP MRKO与MIRO的对比分析:为何寄售结算需要定制开发?
本文深入分析了SAP系统中MRKO与MIRO在寄售结算中的功能差异,揭示了标准MRKO在财务控制和业务流程上的局限性。通过定制开发实践,如BAdI增强和界面优化,企业可显著提升结算效率与准确性。文章还探讨了未来SAP S/4HANA在寄售结算中的智能化趋势,为相关企业提供技术参考。
scala 实现链表
在学习数据结构时学到了链表,因为日常工作,写java写多了,想换个语言玩下,就试着想用scala实现一个链表。哪到知道碰到很多问题, 这里记录下使用scala时,所遇到的那些坑。 java链表 首先,我们先使用java来实现一个链表最简单的链表 public static class Node<T>...
Cadence psspxf实战:手把手教你仿真250MHz环形VCO的电源抑制比(附Verilog代码)
本文详细介绍了使用Cadence psspxf仿真器对250MHz环形VCO的电源抑制比(PSRR)进行仿真的全流程。从环形VCO的设计原理、Verilog代码实现,到Cadence环境配置、仿真参数设置,再到结果分析与优化技巧,提供了完整的实战指南。特别适合电路设计工程师学习如何评估和优化VCO的抗电源噪声能力。
IoT安全软件:Forescout二次开发_Forescout基础架构与原理
Forescout平台是一个集成了多种安全功能的综合解决方案,旨在帮助组织管理和保护其网络中的IoT设备。该平台通过自动发现、分类和监控网络中的设备,提供实时的安全可见性和控制。Forescout的核心优势在于其能够处理混合环境中的各种设备,包括传统IT设备、IoT设备和OT设备。Forescout平台由多个核心组件组成,每个组件负责特定的功能。了解这些组件的运作机制是进行二次开发的基础。假设我们需要定义一个策略,禁止所有厂商为XYZ的设备访问互联网。选择策略类型。
103、scala-链表之单向双向
一、什么是链表 链表是有序的列表,但是它在内存中是存储如下: 总结: 链表是一个有序列表 链表的数据,在内存空间不一定是连续分布的 链表又分单向、双向或者循环 区别: 1、单向链表 2、双向链表 3、循环链表(单向循环,双向循环) 如下图 使用场景及优缺点: 单向链表: 1、单向链表需要实现队列,建设头结点是尾部,入队速度快,但是每次出队需要遍历到最后一个节点 2、实现栈则比较完美 3、链表移除数据需要临时节点来记录待删除节点的前一个节点 双向链表: 1、头尾节点都有并且是双向,则实现队列不用遍
【CASS精品教程】035:南方CASS7.1台阶画法案例大全
摘要:本文详细介绍了南方CASS7.1软件中5种台阶工具的使用方法,包括普通台阶、有边台阶、L型台阶、U型台阶和不规则台阶。重点说明各类台阶的绘制步骤和注意事项,如绘制方向(从右下角逆时针连接4个点)、台阶方向标识(白色边为下边)、台阶数自动生成不可更改等特性。同时指出高版本CASS可能存在操作差异,并配以多张示意图直观展示各类台阶的绘制过程和效果,为使用CASS7.1绘制建筑台阶提供了实用指导。(148字)
数据结构 -- 无向图 环检测
环的定义 在无向图中出现回路,环不包含自环和平行边 图中环检测 scala 实现 CycleDetection.scala import util.control.Breaks.{break, _} class CycleDetection { var G: Graph = _ var visited: Array[Boolean] = _ var hasCycle = fal...
2024顶级提示工程工具:提升效率的12个神器
LlamaIndex虽然本身不是直接的提示词编辑工具,但其整个设计都围绕着如何有效地将外部知识融入LLM的提示词。它提供了结构化的方式来管理“上下文窗口”——即哪些私有数据应该被包含在提示词中。通过优化索引结构和检索策略,可以确保提示词中包含最相关、最高质量的上下文信息,从而大幅提升LLM基于私有数据回答问题的准确性和相关性。同时,LlamaIndex允许开发者针对不同的查询类型和数据特点定制提示词模板,这使得提示词的复用和优化更加系统化。
Arduino ESP32 Web服务器从microSD卡读取
Arduino ESP32 Web服务器从microSD卡读取 将网页内容放到SD卡中,当有客户端数据请求时,从SD卡读取信息进行发送,比起SPIFFS文件系统,更节约板上的硬件资源。 SD卡接线说明 ESP32----- SD D5(GPIO 5)-----CS D18(GPIO 18)-----SCK D19(GPIO 19)-----MISO D23()GPIO 23-----MOSI 文件放置 需要把文件放置到SD卡的根目录下。注意SD卡的格式FAT32格式。 实例代码 /*
使用环形单向链表演示约瑟夫环问题Scala版本
思路 约瑟夫环问题 : 题目是 假设有N个小朋友按顺序围成一圈,每个小朋友都有一个编号,假设从第m个小朋友从1开始报数,报到k的小朋友出圈,从出圈的下一个小朋友继续报数,重复上面的报数。直到所有的人出圈位置。 求出圈的小朋友的顺序是什么 解决方案: 我们使用的是单向的环形链表作为数据结构 思路大致分为 寻找指定开始节点 跳动指定的步长-1(需要获取弹出节点的前一个节点,才可以做删除) 显示弹出节点 代码 package com.xipenhui.cn import scala.collection.
Xilinx FPGA平台GTX简易使用教程(一)GTX基础知识
理解GTX的必备姿势,学起来!
Leetcode141. 环形链表
Leetcode141. 环形链表 题目: 给定一个链表,判断链表中是否有环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部连接到第二个节点。 题解: 方案一:hash表 我们遍历...
Outlook Express 6 (OE6) for Win7/Win8/Win10
英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。
计算机控制技术及应用
《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。
Leetcode202. 快乐数
Leetcode202. 快乐数 题目: 编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 =...
WINCC7.3破解文件
WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!
scala数据结构(四):链表
文章目录链表单向链表 链表 链表是一种有序列表.其中的各对象按线性顺序排列 数组的线性顺序是由数组下标决定的,而链表的顺序是由各个对象里的指针决定的 使用链表结果可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分使用计算机内存空间,灵活的内存动态管理,但是链表失去了数组随机读取的优点,同时链表由于增加了节点的指针域,空间开销比较大 链表作为一种基础的数据结构,可以用来生成其他类型的数据结构,可以分为单向链表,双向链表,循环链表 单向链表 单向链表是最简单的链表,它包含两个域,一个是信息域,一个是指
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
深入理解Scala默认参数函数:从方法重载到优雅API设计
我写这篇文章的时候,特意没罗列默认参数有多少种用法——因为用法很简单,谁都能写。默认参数为什么重要?可选参数。Java里你想要可选参数?写重载方法。想要几个?写一堆。代码臃肿,维护痛苦。Scala的默认参数把这件事简化了——一行函数签名,编译器帮你生成所有的重载方法。调用方想用默认值就用默认值,想改哪个就改哪个,不用管顺序。把重复的事情交给编译器,让程序员专注在业务逻辑上。你不用手写重载方法——编译器帮你写。你不用记参数顺序——命名参数帮你记。你不用写Builder类——默认参数就是Builder。
深入理解Scala嵌套函数:作用域封装之道
我写这篇文章的时候,特意没罗列嵌套函数有多少种写法——因为写法很简单,谁都能写。嵌套函数为什么重要?辅助逻辑的作用域应该是多大?Java里你写辅助逻辑,只能写到类级别——因为Java的方法必须定义在类级别。但很多辅助逻辑其实只属于某一个函数,不属于整个类。你把它们写到类级别,就造成了作用域放大——本来应该是函数内部的东西,变成了类级别的东西。Scala的嵌套函数把这个问题解决了——辅助逻辑可以精确地封装在主函数内部。它直接访问外层函数的变量,不用把上下文传来传去。它不暴露到类级别,不造成API膨胀。
深入理解Scala隐式值:编译期自动装配
用implicit标记一个valdef或object// 隐式val:一个现成的值// 隐式def:需要时才构造(可以带隐式参数,形成链式推导)// 隐式object:单例它们和普通定义没有运行时区别,唯一的区别是——它们被登记进了"隐式候选池",可以被编译器自动取用。隐式值看起来是"让你少写参数",本质上它提供的是一种编译期的、按类型自动装配的机制。工程层面:上下文依赖(执行上下文、配置、序列化器)声明一次自动流转,不用层层透传,缺失和冲突在编译期暴露抽象层面。
【大数据处理与分析】Spark:01 概述
本文介绍Spark内存计算框架与Scala语言特点,对比Spark与Hadoop在速度、IO开销和编程效率上的优劣,指出二者互补共存。
深入理解Scala柯里化函数:函数链式变换
我写这篇文章的时候,特意没罗列柯里化有多少种写法——因为写法很简单。柯里化为什么是函数式编程的一个核心概念?因为函数式编程里,函数是一等公民——函数可以返回函数。柯里化就是这个特性的直接体现:一个多参数函数,可以看成一串单参数函数的链。这带来了什么?——参数可以分阶段传递。你先传配置,得到一个"记住了配置"的函数;以后再传数据。你先传条件,得到一个控制结构;再传执行体。Java里你做不到——Java的方法必须一次传完所有参数。你想"分阶段",只能用Builder模式,手动写一堆对象。
深入理解Scala匿名函数:函数式编程基石
我写这篇文章的时候,特意没罗列匿名函数有多少种写法——因为写法很简单,谁都能写。匿名函数为什么是函数式编程的基石?把函数当参数传。你不能把函数当参数传,就没有map、filter、reduce这些集合操作。没有这些集合操作,就没有声明式编程。没有声明式编程,就没有函数式编程。Java花了很长时间才意识到这一点——Java 8才加了Lambda。但Java的Lambda是不完整的——它只能捕获final变量,不能修改变量。它是一个"阉割版"的闭包。Scala呢?
深入理解Scala偏应用函数:函数工厂设计
我写这篇文章的时候,特意没罗列偏应用函数有多少种写法——因为写法很简单,谁都能写。偏应用函数为什么重要?不是因为"它可以固定一部分参数"——而是因为它让你可以把函数当工厂用。Java里你想写一个"专用函数",怎么办?——写一个新方法,重载,或者用Builder。Scala呢?——一行占位,就把通用函数变成了专用函数。函数是一等公民,你可以加工它——固定参数、组合参数、变换参数——得到新的函数。Java的方法是死的——你定义的时候几个参数,调用的时候就得传几个。
深入理解Scala隐式参数:上下文流转
括号前面是做什么——每次调用都在变的业务数据括号后面是在什么上下文里做——一段计算里相对固定、需要层层共享的运行环境没有它,上下文依赖只能靠手工透传:每一层方法都重复声明、每一次调用都手动传递,链条越长越冗余、越容易出错,而且这些噪声会淹没真正的业务逻辑。隐式参数让这部分"必然相同、机械重复"的传递工作交给编译器,还顺带用类型系统保证了——上下文缺失、有歧义,编译期就拦住你。默认值是方法的私产,上下文是环境的注入。凡是应该随场景而变、被多个环节共享的东西,就该由隐式参数承载。
深入理解Scala模式匹配:结构化解构
switch是基于值的分支——这个标量等于哪个常量match是基于结构的分支——这个数据是什么形状、由什么组成后者之所以强大,是因为它和代数数据类型(sealed + case class)、提取器(unapply)构成了一套闭环:你用样例类把数据"合"起来,用match把数据"拆"开并按结构处理,编译器还能在数据类型增加时,提醒你所有需要改动的分支位置。
深入理解Scala高阶函数:函数式编程核心
我写这篇文章的时候,特意没罗列高阶函数有多少种用法——因为用法很简单,谁都能写。高阶函数为什么是函数式编程的核心?把函数当一等公民,用函数来抽象和组合逻辑。没有高阶函数,函数就不能当参数传——那你就没有map、filter、reduce。没有这些,你就只能写for循环——命令式编程。有了高阶函数,你可以把逻辑封装成函数,传给其他函数——你可以组合函数、变换函数、生成函数。这就是函数式编程。Java花了很长时间才意识到这一点——Java 8加了Lambda和Stream。
1199



被折叠的 条评论
为什么被折叠?



