news 2026/4/15 18:11:29

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/4/15 14:35:04

模拟信号在传感器中的应用:小白入门教程

从电压变化到数据读取&#xff1a;模拟信号在传感器中的真实世界应用你有没有想过&#xff0c;当你用手触摸温控面板时&#xff0c;它是如何“感知”温度的&#xff1f;或者&#xff0c;一株植物脚下的土壤湿度计&#xff0c;是怎么知道该不该提醒你浇水的&#xff1f;这些看似…

作者头像 李华
网站建设 2026/4/15 14:35:44

盘点 | 2026 工业数字人 TOP3 推荐榜单

2026 年工业领域 AI 数字人市场规模将达 102.4 亿元&#xff0c;越来越多企业开始寻求能真正落地生产、运维、培训全场景的数字人解决方案。本文将从技术适配、场景落地、成本效益三大维度&#xff0c;筛选出 2026 年最值得关注的 3 款工业数字人服务&#xff0c;为企业数字化转…

作者头像 李华
网站建设 2026/4/15 14:33:40

2026可落地商用数字人选型指南:TOP5产品深度测评与实战对比

数字人技术步入"深度应用"新阶段随着智能制造战略的深入推进&#xff0c;数字人已从"锦上添花"的辅助工具升级为"产线核心交互入口"&#xff0c;私有化部署、系统协同性、断网可用性、专业知识适配成为选型核心指标。本文将从技术适配、场景落地…

作者头像 李华
网站建设 2026/4/11 3:32:35

12. SELinux 加固 Linux 安全

SELinux 介绍 基本原理SELinux默认策略允许apache进程访问在/var/www/html文件夹下的文件和文件夹&#xff0c;以及其 他一些具有httpd_sys_content_t上下文的文件夹&#xff0c;禁止访问具有其他不匹配标签的目录。在 SELinux 的保护下&#xff0c;apache进程不允许访问/tmp和…

作者头像 李华