每日一题——LeetCode1266.访问所有点的最小时间

方法一 个人方法 找规律:

当前的点为current,下一个点为next,x为两点横坐标之间距离,y为两点竖坐标之间距离

1、当两点横坐标相同时,两点距离为y

2、当两点竖坐标相同时,两点距离为x

3、当两点x与y相同时,则两点的连线在直线y=x上,那么两点的距离既是x也是y

4、当y>x时,x可以转换为y的一部分,其实距离就是y,同理x>y,y可以转为x的一部分,距离就是x

比如:从(1,1)点到(3,4)点的距离,其实和(3,1)到(3,4)的距离是一样的。

var minTimeToVisitAllPoints = function(points) {let time=0for(let i=0;i<points.length-1;i++){let current=points[i],next=points[i+1]let x=Math.abs(next[0]-current[0]),y=Math.abs(next[1]-current[1])if(current[1]===next[1]){time+=x}else if(current[0]===next[0]){time+=y}else if(x===y){time+=x}else{if(x<y){time+=y}else if(x>y){time+=x}}}return time
};

消耗时间和内存情况:

其实可以更加简化:

不用分那么多情况,两点间距离就是x轴距离和y轴距离绝对值更大的那一个:

var minTimeToVisitAllPoints = function (points) {let result = 0for (let i = 0; i < points.length - 1; i++) {let x = Math.abs(points[i + 1][0] - points[i][0])let y = Math.abs(points[i + 1][1] - points[i][1])result += Math.max(x, y)}return result
};

消耗时间和内存情况:

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

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

相关文章

回归预测 | Matlab实现SSA-BP麻雀算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SSA-BP麻雀算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SSA-BP麻雀算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SSA-BP麻雀算法优化BP神经网络多变量回归预测&#xff1b; 2.数据…

UML-实现图(组件图和部署图)

实现图是从系统的层次来描述的&#xff0c;描述硬件的组成和布局&#xff0c;描述软件系统划分和功能实现。 UML-实现图&#xff08;组件图和部署图&#xff09; 一、组件图1.组件图的元素&#xff08;1&#xff09;组件&#xff08;2&#xff09;接口&#xff08;3&#xff09…

C++后端笔记

C后端笔记 资源整理一、高级语言程序设计1.1 进制1.2 程序结构基本知识1.3 数据类型ASCII码命名规则变量间的赋值浮点型变量的作用字符变量常变量 const运算符 二、高级语言程序设计&#xff08;荣&#xff09; 资源整理 C后端开发学习路线及推荐学习时间 C基础知识大全 C那…

Flink TaskManager内存管理机制介绍与调优总结

内存模型 因为 TaskManager 是负责执行用户代码的角色&#xff0c;一般配置 TaskManager 内存的情况会比较多&#xff0c;所以本文当作重点讲解。根据实际需求为 TaskManager 配置内存将有助于减少 Flink 的资源占用&#xff0c;增强作业运行的稳定性。 TaskManager 内…

02 MyBatisPlus核心功能之基于Mapper接口CRUD+基于Service接口实现CRUD

项目结构&#xff1a; 1.1 Insert方法 // 插入一条记录 // T 就是要插入的实体对象 // 默认主键生成策略为雪花算法&#xff08;后面讲解&#xff09; //返回值是影响条数 int insert(T entity);1.2 Delete方法 // 根据 entity 条件&#xff0c;删除记录 int delete(Param(…

详解JDBC各个对象

文章目录 DriverManagerConnectionStatementPreparedStatementResultSet案例案例一&#xff1a;JDBC控制事务案例二&#xff1a;SQL 注入错误演示 DriverManager 概述&#xff1a;DriverManager 是驱动管理类 作用 获取数据库连接 // 返回数据库连接的对象&#xff0c;url 是指…

资料收集:储能bms架构

储能系统保护与控制之电池管理系统&#xff08;BMS&#xff09; 重点储能BMS企业汇总 储能BMS分为三级架构&#xff1a; 第一级&#xff1a;每个电池插箱包含1并48串电池模组&#xff0c;插箱配置1个BMU从控模块&#xff0c;用于对该电池组的电压、温度等信息的采集和上传。 …

学习Spring的第五天(Bean的依赖注入)

Bean的依赖注入有两种方式: 一 . 常规Bean的依赖注入 很简单,不过多赘述了,注意ref: 是构造函数或set方法的参数,一般为对象, value: 是构造函数或set方法的参数,一般为值. 看下图 1.1 下面来演示一下集合数据类型的关于Bean的依赖注入 1.1.1这是List的注入(演示泛型为Strin…

设计 Mint.com

1. 梳理 User Case 和 约束 Use cases 作用域内的Use Case User 连接到 financial accountService 从 Account 中提取 transactions 日常 Update整理 transaction 所有的手动目录由 User 覆盖没有自动化的重排机制 - 通过目录分析月消费 Service 推荐 budget 允许 user 去…

提升开发效率,Fiddler Everywhere for Mac助您解决网络调试难题

在现代软件开发中&#xff0c;网络调试是一个不可或缺的环节。无论是前端开发还是后端开发&#xff0c;我们经常需要对网络请求进行监控和调试&#xff0c;以便及时发现并解决问题。而Fiddler Everywhere for Mac作为一款强大的网络调试工具&#xff0c;能够帮助开发者提升工作…

Backtrader 文档学习-Indicators混合时间框架

Backtrader 文档学习-Indicators混合时间周期 1.不同时间周期 如果数据源在Cerebro引擎中具有不同的时间范围和不同的长度&#xff0c;指示器将会终止。 比如&#xff1a;data0是日线&#xff0c;data1是月线 。 pivotpoint btind.PivotPoint(self.data1) sellsignal self…

快慢指针-Floyd判圈算法

对于环形链表是否存在环的做法&#xff0c;普通算法可以通过额外Hash数组来存储链表元素&#xff0c;直到Hash数组中出现重复元素。时间复杂度O(n)&#xff0c;空间复杂度O(n) Floyd判圈算法通过利用快慢指针的移动来实现&#xff0c;时间复杂度O&#xff08;n&#xff09;&am…