news 2026/5/10 22:48:43

LeetCode 1266.访问所有点的最小时间:贪心(数学)+python一行版

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 1266.访问所有点的最小时间:贪心(数学)+python一行版

【LetMeFly】1266.访问所有点的最小时间:贪心(数学)+python一行版

力扣题目链接:https://leetcode.cn/problems/minimum-time-visiting-all-points/

平面上有n个点,点的位置用整数坐标表示points[i] = [xi, yi]。请你计算访问所有这些点需要的最小时间(以秒为单位)。

你需要按照下面的规则在平面上移动:

  • 每一秒内,你可以:
    • 沿水平方向移动一个单位长度,或者
    • 沿竖直方向移动一个单位长度,或者
    • 跨过对角线移动sqrt(2)个单位长度(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。
  • 必须按照数组中出现的顺序来访问这些点。
  • 在访问某个点时,可以经过该点后面出现的点,但经过的那些点不算作有效访问。

示例 1:

输入:points = [[1,1],[3,4],[-1,0]]输出:7解释:一条最佳的访问路径是:[1,1]-> [2,2] -> [3,3] ->[3,4]-> [2,3] -> [1,2] -> [0,1] ->[-1,0]从 [1,1] 到 [3,4] 需要 3 秒 从 [3,4] 到 [-1,0] 需要 4 秒 一共需要 7 秒

示例 2:

输入:points = [[3,2],[-2,2]]输出:5

提示:

  • points.length == n
  • 1 <= n <= 100
  • points[i].length == 2
  • -1000 <= points[i][0], points[i][1] <= 1000

解题方法:贪心

斜着移动一次相当于横着移动一次加竖着移动一次,点的访问顺序是固定的,所以从a点到b点时:

我们尽可能多地斜向移动,移动到一条水平线或竖直线时水平/竖直移动。

总移动次数:m a x ( 水平 d i f f , 竖直 d i f f ) max(水平diff, 竖直diff)max(水平diff,竖直diff)。相当于斜向移动时候把近的那个水平/竖直分量给一块走了。

  • 时间复杂度O ( l e n ( p i n t s ) ) O(len(pints))O(len(pints))
  • 空间复杂度O ( 1 ) O(1)O(1)

AC代码

C++
/* * @LastEditTime: 2026-01-12 23:28:12 */classSolution{public:intminTimeToVisitAllPoints(vector<vector<int>>&points){intans=0;for(inti=1;i<points.size();i++){ans+=max(abs(points[i][0]-points[i-1][0]),abs(points[i][1]-points[i-1][1]));}returnans;}};
Python
''' LastEditTime: 2026-01-12 23:32:26 '''fromtypingimportListfromitertoolsimportpairwiseclassSolution:defminTimeToVisitAllPoints(self,points:List[List[int]])->int:returnsum(max(abs(a[0]-b[0]),abs(a[1]-b[1]))fora,binpairwise(points))
Java
/* * @LastEditTime: 2026-01-12 23:32:59 */classSolution{publicintminTimeToVisitAllPoints(int[][]points){intans=0;for(inti=1;i<points.length;i++){ans+=Math.max(Math.abs(points[i][0]-points[i-1][0]),Math.abs(points[i][1]-points[i-1][1]));}returnans;}}
Go
/* * @LastEditTime: 2026-01-12 23:35:23 */packagemainfuncabs1266(aint)int{ifa<0{return-a}returna}funcminTimeToVisitAllPoints(points[][]int)(ansint){fori:=1;i<len(points);i++{ans+=max(abs1266(points[i][0]-points[i-1][0]),abs1266(points[i][1]-points[i-1][1]))}return}
Rust
/* * @LastEditTime: 2026-01-12 23:37:10 */implSolution{pubfnmin_time_to_visit_all_points(points:Vec<Vec<i32>>)->i32{letmutans:i32=0;foriin1..points.len(){ans+=(points[i][0]-points[i-1][0]).abs().max((points[i][1]-points[i-1][1]).abs());}ans}}

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

千篇源码题解已开源

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 17:22:19

Multisim14.2安装教程:防病毒软件冲突解决方法

Multisim 14.2 安装卡住&#xff1f;别急&#xff0c;先让杀毒软件“闭嘴”&#xff01;你是不是也遇到过这种情况&#xff1a;好不容易找到Multisim 14.2的安装包&#xff0c;兴冲冲地双击setup.exe&#xff0c;结果刚解压一半就弹出一个红色警告——“此程序可能有害&#xf…

作者头像 李华
网站建设 2026/5/8 4:02:53

软著撰写要点

一、什么样的内容可以写软著并申请成功&#xff1f;软著不查重&#xff0c;只要具备一定实用性功能且软件运行界面不同就可以申请软件著作权。二、申请软著需包含的核心文件软件著作说明书源代码计算机软件著作权登记信息表软件合作开发协议三、说明书说明书分为两种&#xff0…

作者头像 李华
网站建设 2026/5/3 1:26:40

Hive与Kylin整合:构建企业级OLAP解决方案

Hive与Kylin整合:构建企业级OLAP解决方案 一、引言:企业级OLAP的痛点与解决方案 1.1 痛点:当Hive遇到“慢查询”困境 在企业数据架构中,Hive作为经典的数据仓库工具,承担着原始数据存储、ETL(抽取-转换-加载)和批量计算的核心角色。它通过类SQL的HQL语言,让分析师无…

作者头像 李华
网站建设 2026/5/10 18:49:21

常见的垃圾回收器

目录 常见的垃圾回收器 串行垃圾收集器 并行垃圾收集器 并发垃圾收集器 总结 CMS的介绍 G1的介绍 特点 四个阶段 常见的垃圾回收器 并行&#xff08;Parallel&#xff09; &#xff1a;指多条垃圾收集线程并行工作&#xff0c;但此时用户线程处于STW状态。 并发&…

作者头像 李华
网站建设 2026/5/7 22:04:57

基于Java+SpringBoot+SSM办公管理系统(源码+LW+调试文档+讲解等)/办公系统/管理系统/办公自动化系统/企业办公管理系统/智能办公管理系统/协同办公管理系统

博主介绍 &#x1f497;博主介绍&#xff1a;✌全栈领域优质创作者&#xff0c;专注于Java、小程序、Python技术领域和计算机毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2025-2026年最新1000个热门Java毕业设计选题…

作者头像 李华
网站建设 2026/5/6 22:36:01

**发散创新:AI寻路算法的设计与实现**随着人工

发散创新&#xff1a;AI寻路算法的设计与实现 随着人工一、引言 随着机器学习、深度学习等技术的不断进步&#xff0c;AI在路径规划、寻路算法等领域的应用逐渐显现。本文将介绍一种新型的AI寻路算法&#xff0c;该算法能够自动学习并优化寻路策略&#xff0c;提高寻路效率。 三…

作者头像 李华