160. 相交链表 (Swift版本)

题目描述

在这里插入图片描述

最简单直接的解法

遍历 headA 的所有节点, 看 headB 中是否有相交的节点

/*** Definition for singly-linked list.* public class ListNode {*     public var val: Int*     public var next: ListNode?*     public init(_ val: Int) {*         self.val = val*         self.next = nil*     }* }*/class Solution {func getIntersectionNode(_ headA: ListNode?, _ headB: ListNode?) -> ListNode? {var next: ListNode? = headAwhile next != nil {if containNode(headB, next) {return next}next = next?.next}return nil
}func containNode(_ headB: ListNode?, _ node: ListNode?) -> Bool {var next: ListNode? = headBwhile next != nil {if node === next { return true }next = next?.next}return false
}
}

哈希集合优化

因为示例中的 ListNode 没有实现 Hash 相关协议, 所以无法使用 Set, 这里使用 Array 代替. (LeetCode, 咱能不能重视一下 Swift 用户, OK ?)

/*** Definition for singly-linked list.* public class ListNode {*     public var val: Int*     public var next: ListNode?*     public init(_ val: Int) {*         self.val = val*         self.next = nil*     }* }*/class Solution {var globalSet = Array<ListNode?>()func getIntersectionNode(_ headA: ListNode?, _ headB: ListNode?) -> ListNode? {var next: ListNode? = headAif (globalSet.contains { $0 === next }) {return next}while next != nil {if containNode(headB, next) {return next}next = next?.next}return nil
}func containNode(_ headB: ListNode?, _ node: ListNode?) -> Bool {var next: ListNode? = headBwhile next != nil {if node === next { return true }if (!globalSet.contains { $0 === next }) {globalSet.append(next)}next = next?.next}return false
}}

上面两个方法提交后, 结果都是: 超出时间限制

双指针

/*** Definition for singly-linked list.* public class ListNode {*     public var val: Int*     public var next: ListNode?*     public init(_ val: Int) {*         self.val = val*         self.next = nil*     }* }*/class Solution {func getIntersectionNode(_ headA: ListNode?, _ headB: ListNode?) -> ListNode? {if headA == nil || headB == nil {return nil}var pA = headA, pB = headBwhile pA !== pB {pA = pA == nil ? headB : pA?.nextpB = pB == nil ? headA : pB?.next}return pA}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1451419.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

(三十)Flask之wtforms库【剖析源码上篇】

每篇前言&#xff1a; &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 &#x1f525;&#x1f525;本文已收录于Flask框架从入门到实战专栏&#xff1a;《Flask框架从入…

Nacos启动报错

报错日志&#xff1a; Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2983) at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873) at com.mysql.jdbc.Mysql…

为Windows鼠标增加个性功能的软件

一、简介 1、是一款专为Windows操作系统设计的桌面增强工具&#xff0c;它允许用户通过简单的鼠标操作来管理和控制窗口&#xff0c;从而提高工作效率。根据搜索结果&#xff0c;for Windows提供了多种功能&#xff0c;如在屏幕的四个角落添加快捷键、窗口置顶、窗口最小化、快…

python中的turtle

turtle个别指令 初始箭头默认指向为东&#xff08;右&#xff09; 往前&#xff08;右&#xff09;三个格&#xff1a;turtle.forward(3) 往后&#xff08;左&#xff09;三个格&#xff1a;turtle.backward(3) 往左转90度&#xff1a;turtle.left(90) 往右转90度&#xf…

干G货,性能测试基本方法和原则,

一、性能测试关键点 评估性能指标——线程tps&#xff08;可架构给&#xff09; 吞吐量qps&#xff08;可架构给&#xff09; 错误率&#xff08;可架构给&#xff09; 平均响应时间&#xff08;可架构给&#xff09;模拟线上数据量了解接口有没有缓存&#xff0c;有缓存的需要…

人工智能内容标签和披露:指南、样本和最佳实践

AI Content Labeling and Disclosure: Guidelines, Samples & Best Practices 【前言】当我们谈论人工智能生成的内容时&#xff0c;话题很快转向了透明度和信任的重要性。随着人工智能继续塑造数字景观&#xff0c;对内容标签和披露的明确指导方针的需求变得至关重要。无…

【数据质量人人有责】数据质量是什么?

引言&#xff1a;数据是当代企业的核心资源之一&#xff0c;对于支持业务决策、优化运营和增强竞争力至关重要。然而&#xff0c;仅仅拥有数据并不意味着能够充分发挥其潜在价值。只有先确保数据质量&#xff0c;才能保证后续数据分析和挖掘的正确的结果对管理和业务有价值&…

C++ 06 之 c++增强

c06c增强.cpp #include <iostream>using namespace std; // 1、全局变量检测增强&#xff1a;可以检测出重定义 (c语言不会报错&#xff0c;但是C会报错) //int a; //int a 10;// 2、函数检测增强: 函数返回值类型、形参类型、实参个数 int sum(int a, int b) {return …

MBTI:探索你的性格类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

vmmare虚拟机没有被分配ip地址问题;NAT模式下一直变化问题

打开任务管理器–>服务–>找到与VM和server相关的服务 发现NAT和DHCP服务被关闭了 尝试启动&#xff0c;报错 尝试一 虚拟网络编辑器点击还原默认设置 尝试二 可以了 ip变化 更改租用时长

短视频矩阵系统/源码搭建---拆解热门视频功能开发上线

短视频矩阵系统/源码搭建 一、短视频矩阵系统源码开发需要用到以下技术&#xff1a; 1.前端技术&#xff1a;HTML、CSS、JavaScript、Vue.js等前端框架。 2.后端技术&#xff1a;Java、Python、PHP等后端语言及相关框架&#xff0c;如Spring Boot、Django、Laravel等。 3.移…

macOS Sequoia 将 Mac 生产力与智能化提升至全新高度

本文转载自 官方新闻&#xff1a;https://www.apple.com.cn/newsroom/2024/06/macos-sequoia-takes-productivity-and-intelligence-on-mac-to-new-heights/ 文章目录 1、借助 iPhone 镜像 直接在 Mac 上无线使用 iPhone2、Safari 浏览器迎来重大更新3、升级的游戏体验与备受瞩…

Eclipse 单步调试的时候报错,通过一些设置处理下。

先帖张图&#xff1a; 勾选不提醒。 1、通过Java Compiler&#xff0c;进行设置: 然后设置以后&#xff0c;进入调试&#xff0c;还是 报上面的错&#xff0c;有的小伙伴说是先去勾选&#xff0c;然后确认。 然后再选择&#xff0c;确认。 2、设置Jdk为自己安装的。 设置成功后…

爆肝三天,制作属于自己的地图——DAY3(地图数据发布详细教程)

4&#xff0c;重建顶层。 倾斜摄影数据的组织方式&#xff0c;一个 Data 目录下的 Tile 可能会成千上万&#xff0c;如果不使用重建顶层&#xff0c;那么输出的3DTiles的包围盒会非常非常多&#xff0c;增加加载时长。重建顶层&#xff0c;程序会根据瓦片的空间结构关系采用八…

PyQt5学习系列之新项目创建并使用widget

PyQt5学习系列之新项目创建并使用widget 前言报错新建项目程序完整程序总结 前言 新建项目&#xff0c;再使用ui转py&#xff0c;无论怎么样都打不开py文件&#xff0c;直接报错。 报错 Connected to pydev debugger (build 233.11799.298)新建项目程序 # Press ShiftF10 to…

javaWeb项目-ssm+vue中国风音乐推介网站功能介绍

本项目源码&#xff1a;java-ssmvue中国风音乐推介网站源码说明文档资料资源-CSDN文库 项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、…

仰望U8三大黑科技,重新定义智能汽车

文 | 智能相对论 作者 | 雷歌 是时候重新定义中国的“智能汽车”了。 在仰望U8出来以前&#xff0c;普通人对知道的智能汽车的配置认识&#xff0c;智能汽车是智能驾驶智能座舱&#xff0c;硬件上大概是这几样&#xff1a;毫米波雷达激光雷达智驾芯片。 仰望U8出来以后&…

NetSuite ERP项目中非批次物料—批次物料数据转换流程

最近在刚结束的项目上也再次碰到了非批次物料转换为批次物料的操作&#xff0c;因此也想把我们在处理数据流程中的心得写出来&#xff0c;以便复盘与总结&#xff0c;也分享给各位。 整体的步骤我们可分为准备工作&#xff0c;调整工作以及检查工作&#xff1a; 准备工作 主…

深入浅出 Qt 中 QListView 的设计思想,并掌握大规模、高性能列表的实现方法

在大规模列表控件的显示需求中&#xff0c;必须解决2个问题才能获得较好的性能&#xff1a; 第一就是数据存在哪里&#xff0c; 避免出现数据的副本。第二就是如何展示Item&#xff0c;如何复用或避免创建大量的Item控件。 在QListView体系里&#xff0c;QAbstractListModel解…

聚鼎科技:装饰画行业新手怎么入局

进入装饰画行业&#xff0c;对于新手而言既是机遇也是挑战。此行业融合了艺术感与市场需求&#xff0c;要求从业者不仅需要具备良好的审美能力&#xff0c;还要了解市场动态&#xff0c;掌握一定的营销策略。 明确定位是入局的第一步。新手应该确定自己想要涉足的装饰画领域&am…