2026/2/20 13:10:58
网站建设
项目流程
企业网站优化服务商,网站建设相关资质,信用网站建设意义,实名网站审核中心【LetMeFly】1266.访问所有点的最小时间#xff1a;贪心#xff08;数学#xff09;python一行版
力扣题目链接#xff1a;https://leetcode.cn/problems/minimum-time-visiting-all-points/
平面上有 n 个点#xff0c;点的位置用整数坐标表示 points[i] [xi, yi] 。请…【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 n1 n 100points[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(vectorvectorintpoints){intans0;for(inti1;ipoints.size();i){ansmax(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){intans0;for(inti1;ipoints.length;i){ansMath.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{ifa0{return-a}returna}funcminTimeToVisitAllPoints(points[][]int)(ansint){fori:1;ilen(points);i{ansmax(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:VecVeci32)-i32{letmutans:i320;foriin1..points.len(){ans(points[i][0]-points[i-1][0]).abs().max((points[i][1]-points[i-1][1]).abs());}ans}}同步发文于CSDN和我的个人博客原创不易转载经作者同意后请附上原文链接哦~千篇源码题解已开源