LeetCode题练习与总结:路径交叉--335

一、题目描述

给你一个整数数组 distance 

从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就是说,每次移动后你的方位会发生逆时针变化。

判断你所经过的路径是否相交。如果相交,返回 true ;否则,返回 false 。

示例 1:

输入:distance = [2,1,1,2]
输出:true

示例 2:

输入:distance = [1,2,3,4]
输出:false

示例 3:

输入:distance = [1,1,1,1]
输出:true

提示:

  • 1 <= distance.length <= 10^5
  • 1 <= distance[i] <= 10^5

二、解题思路

我们需要判断路径是否会相交。对于每一步移动,我们可以记录当前的位置和移动的方向。由于移动是逆时针的,我们可以用一个变量来记录当前的移动方向。

路径相交的情况有以下几种:

  1. 第四步开始会与第一步相交。
  2. 第五步开始会与第一步相交。
  3. 第六步开始会与第二步相交。

基于上述情况,我们可以得到以下规律:

  • 当 i >= 3 时,如果 distance[i] >= distance[i - 2] 并且 distance[i - 1] <= distance[i - 3],则第四步会与第一步相交。
  • 当 i >= 4 时,如果 distance[i] + distance[i - 4] >= distance[i - 2] 并且 distance[i - 1] == distance[i - 3],则第五步会与第一步相交。
  • 当 i >= 5 时,如果 distance[i] + distance[i - 4] >= distance[i - 2] 并且 distance[i - 1] + distance[i - 5] >= distance[i - 3] 并且 distance[i - 1] < distance[i - 3],则第六步会与第二步相交。

三、具体代码

class Solution {public boolean isSelfCrossing(int[] distance) {int n = distance.length;if (n < 4) return false;for (int i = 3; i < n; i++) {// 第四步开始会与第一步相交if (distance[i] >= distance[i - 2] && distance[i - 1] <= distance[i - 3]) {return true;}// 第五步开始会与第一步相交if (i >= 4 && distance[i] + distance[i - 4] >= distance[i - 2] && distance[i - 1] == distance[i - 3]) {return true;}// 第六步开始会与第二步相交if (i >= 5 && distance[i] + distance[i - 4] >= distance[i - 2] && distance[i - 1] + distance[i - 5] >= distance[i - 3] && distance[i - 1] < distance[i - 3]) {return true;}}return false;}
}

上述代码实现了对路径是否相交的判断,通过循环遍历 distance 数组,并按照上述规律判断路径是否相交。如果相交,则返回 true;否则,返回 false。

四、时间复杂度和空间复杂度

1. 时间复杂度

该算法包含一个主循环,该循环遍历整个 distance 数组。数组的大小为 n,所以循环会执行 n 次。在循环内部,我们执行了常数时间的操作,即比较和简单的算术运算。

因此,算法的时间复杂度是 O(n),其中 n 是 distance 数组的长度。

2. 空间复杂度

该算法使用了固定数量的额外空间。它只使用了几个整型变量(n 和循环变量 i),这些变量占用的空间不随输入数组 distance 的大小而变化。

因此,算法的空间复杂度是 O(1),即常数空间。

五、总结知识点

  • 类定义 (class Solution):

    • 定义了一个名为 Solution 的公共类,这是 Java 中定义类的标准方式。
  • 方法定义 (public boolean isSelfCrossing(int[] distance)):

    • 定义了一个公共方法 isSelfCrossing,它接受一个整数数组 distance 作为参数,并返回一个布尔值。
    • public 关键字表示该方法可以被类外部访问。
    • boolean 表示返回类型是布尔值,即 true 或 false
  • 数组长度获取 (int[] distance 的 length 属性):

    • 使用 distance.length 来获取数组的长度,这是访问 Java 数组长度的标准方式。
  • 循环结构 (for 循环):

    • 使用 for 循环来遍历数组 distance,从索引 3 开始,因为前三个元素不足以形成交叉。
  • 条件判断 (if 语句):

    • 使用 if 语句来检查路径是否交叉的条件,这是控制流语句的一部分。
  • 数组索引访问 (distance[i]):

    • 使用数组索引 i 来访问数组 distance 中的元素。
  • 比较操作符 (>=<===):

    • 使用比较操作符来比较数组元素的大小,以确定路径是否交叉。
  • 逻辑操作符 (&&||):

    • 使用逻辑与 (&&) 和逻辑或 (||) 操作符来组合多个条件判断。
  • 返回语句 (return true;return false;):

    • 使用 return 语句来结束方法的执行并返回一个值。
  • 边界检查 (i >= 4i >= 5):

    • 在循环中添加了边界检查,以确保不会访问数组索引外的元素,这可以防止 ArrayIndexOutOfBoundsException

以上就是解决这个问题的详细步骤,希望能够为各位提供启发和帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从安灯系统看汽车零部件工厂的智能制造转型

在当今快速发展的制造业领域&#xff0c;汽车零部件工厂正面临着日益激烈的市场竞争和不断提高的客户需求。为了在竞争中脱颖而出&#xff0c;实现可持续发展&#xff0c;许多汽车零部件工厂纷纷踏上智能制造转型之路。而安灯系统作为一种重要的生产管理工具&#xff0c;在这场…

Nginx可视化管理平台nginxWebUI(1)【保姆级部署方式】

目录 nginxWebUI简介 1.概述&#xff1a; 2.功能 NginxWebUI的部署方式 实验环境&#xff1a; 1.安装JDK环境、nginx和nginx程序 2.启动nginxWebUI 3.使用浏览器登录webUI 访问格式&#xff1a; 登陆成功后我们就来到了它的可视化管理页面 nginxWebUI简介 1.概述&am…

面试总结一

面试总结 1、自我介绍一下自己2.面试11、css常用布局有哪些2、css常用的属性3.js原型链4、开发中遇到的技术难点5、闭包6、ts了解什么呢7.git都用什么命令8、vue怎么打包9.vue启动一个项目需要什么10、vue怎么创建一个项目 2.面试21.vue2和vue3有什么区别2.复杂组件的封装&…

vue-element-admin顶部导航栏的修改

基于vue-element-admin的顶部一级导航栏的调整&#xff0c;因为一级路由过多导致其他元素被挤到第二行&#xff0c;故现在将原来一级路由数组拆分成两个数组&#xff0c;第二个数组以子菜单显示 关键处调整代码 html <el-menu:active-text-color"variables.menuActiv…

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发

如何为自己的跨境网站添加多国语言翻译功能及推荐起尔网定制与插件开发 在全球化的浪潮下&#xff0c;跨境电商成为越来越多企业拓展国际市场的重要途径。然而&#xff0c;语言障碍成为了一个不可忽视的问题。为了更好地服务全球用户&#xff0c;为自己的跨境网站添加多国语言…

199116-50-2,Mito-Tracker Orange CMTMRos是一种高亲和力的线粒体染色剂

一、基本信息 中文名称&#xff1a;线粒体橙色荧光探针 英文名称&#xff1a;Mito-Tracker Orange CMTMRos CAS号&#xff1a;199116-50-2 分子式&#xff1a;C24H24Cl2N2O 分子量&#xff1a;427.37 存储条件&#xff1a;避光、冷藏保存&#xff0c;避免长时间暴露于光线…

基于SSM健身国际俱乐部系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;场地类别管理&#xff0c;场地信息管理&#xff0c;运动项目管理&#xff0c;场地类型管理&#xff0c;项目类型管理 用户账号功能包括&#xff1a;系统首页&#xff0c;个人中心…

QML----Webengineview点击网页上的下载没反应,下载文件

问题 使用webe加载网页时&#xff0c;点击下载页面会没有反应。原因就是它默认是关闭下载功能 解决 需要在profile里监听下载事件打开onDownloadRequested,当有下载时会触发这个信号,会获取到一个WebEngineDownloadItem这是下载的东西,查询它的一些相关参数,可以修改路径和开…

网站前端登录加密方案调查

https://zhuanlan.zhihu.com/p/625204114 案例 国家政务服务平台 账号设置 (gjzwfw.gov.cn) 方案 代码混淆Rsa公钥加密https协议 案例 LOFTER&#xff08;乐乎&#xff09; - 让兴趣&#xff0c;更有趣 方案 sha256https Sign in GitLab (secxun.com) 方案 不加密内网 凤凰…

mysql视图介绍(本质,修改数据时的表现,排序覆盖)

目录 视图 介绍 语法 使用 本质 修改数据 排序覆盖 视图 介绍 是一种虚拟表&#xff0c;它不存储实际的数据&#xff0c;而是基于查询结果动态生成数据 将查询结果以表结构保存视图和基表之间会互相影响 视图可以基于一张或多张表来创建&#xff0c;并且可以像普通表一样…

List、Set、数据结构、Collections

一、数据结构 1.1 常用的数据结构 栈 栈&#xff1a;stack,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在其他任何位置进行添加、查找、删除等操作。 简单的说&#xff1a;采用该结构的集合&#…

Clickhouse笔记(二) 集群搭建

0.集群规划 操作系统使用ubuntu2204server&#xff0c;8C8G100G。 节点分片部署192.168.50.5分片1副本1clickhouse-server/clickhouse-client/keeper192.168.50.6分片1副本2clickhouse-server/clickhouse-client/keeper192.168.60.7分片2副本1clickhouse-server/clickhouse-c…

ECharts饼图-饼图纹理,附视频讲解与代码下载

引言&#xff1a; 在数据可视化的世界里&#xff0c;ECharts凭借其丰富的图表类型和强大的配置能力&#xff0c;成为了众多开发者的首选。今天&#xff0c;我将带大家一起实现一个饼图图表&#xff0c;通过该图表我们可以直观地展示和分析数据。此外&#xff0c;我还将提供详…

day7:软件包管理

一&#xff0c;软件包概述 软件包概述 软件包用于安装&#xff0c;升级&#xff0c;卸载一个软件 软件包类型 二进制包 源码经过了编译&#xff08;而且成功了&#xff09;后产生的包&#xff0c;二进制包是linux下默认的安装包 编译好的文件&#xff0c;直接使用&#xff…

音质最好的麦克风有哪些?领夹麦克风哪个品牌好?麦克风十大品牌

在当下自媒体行业蓬勃发展的背景下&#xff0c;无线领夹麦克风已成为众多内容创作者不可或缺的装备。市场上的无线领夹麦克风种类繁多&#xff0c;品质参差不齐&#xff0c;价格也相差悬殊&#xff0c;这使得选购一款合适的麦克风变得颇具挑战性。许多消费者在追求性价比的过程…

无人机避障——路径规划篇(一) JPS跳点搜索算法A*算法对比

JSP 跳点搜索算法与改进 A*算法对比 一、算法概述: 跳点搜索(Jump Point Search,JPS)算法:一种用于路径规划的启发式搜索算法。它主要用于在网格地图(如游戏地图、机器人运动规划地图等)中快速找到从起点到终点的最短路径。该算法在改进 A*算法的基础上进行了优化,通过跳过一…

自由学习记录(12)

综合实践 2D的Shape&#xff0c;Tilemap都要导包的&#xff0c;编辑器也要导包&#xff0c;。。和2d沾边的可能3d都要主动导包 应该综合的去运用&#xff0c;不见得Tilemap就很万能&#xff0c;如果要做什么顶方块的有交互反应的物体&#xff0c; 那直接拖Sprite会更方便一些…

大路灯护眼灯是智商税吗?五款口碑最好的落地灯品牌分享

大路灯护眼灯是智商税吗?在当前照明灯具中&#xff0c;护眼灯大路灯并不是智商税&#xff01;护眼大路灯因其出色的灯光和舒适度效果而受到广泛欢迎。面对市场众多的护眼大路灯产品&#xff0c;选择一把优质的护眼大路灯显得尤为重要。低质量的护眼大路灯不仅性能不佳&#xf…

探索音频在线剪辑工具的奇妙世界

无论是专业的音频制作人&#xff0c;还是普通的音乐爱好者&#xff0c;都可能需要对音频进行剪辑和编辑。我比较建议从低成本的工具开始入手避免浪费&#xff0c;今天我推荐几款音频在线剪辑工具一起看看这些共苦如何打造作品吧。 1.福昕音频剪辑 教程链接&#xff1a;https:…

初学者如何学习网络安全,零基础入门到精通,收藏这一篇就够了

学习任何技术或知识前&#xff0c;需要培养好的学习习惯&#xff0c;投入时间和精力去进行钻研&#xff0c;培养兴趣和学习能力&#xff0c;并能通过搜索引擎解决问题。对于网络安全学习来说&#xff0c;要掌握学习方法&#xff0c;因为它的知识面广且复杂。 之前看到一张&quo…