Go语言解LeetCode1266:访问所有点的最小时间

小林子
小林子
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何利用Go语言实现LeetCode第1266题“访问所有点的最小时间”的解题方案,核心在于计算相邻点之间的切比雪夫距离。

题目描述

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

移动规则如下:

  • 每秒可水平移动一个单位;
  • 或竖直移动一个单位;
  • 或跨过对角线移动(同时改变x和y坐标,视为一秒内完成)。必须按照数组中出现的顺序访问这些点。

示例 1:

输入:points = [[1,1],[3,4],[-1,0]]
输出:7
解释:最佳路径包括在对角线移动与水平/垂直移动之间切换,以最短时间覆盖距离。

思路分析

在允许对角线移动的情况下,两点之间的最短路径长度即为数学上的切比雪夫距离。这意味着两点间的时间消耗等于其横纵坐标差值的绝对值中的较大者。

设当前点为 (x1, y1),下一个点为 (x2, y2),则两点间耗时计算公式为:
max(|x1 - x2|, |y1 - y2|)。

整体策略是遍历整个点数组,累加每一对相邻点之间的这个最大值,所得总和即为访问完所有点所需的最少时间。

Go 语言 AC 代码

以下是使用 Go 语言编写的完整解决方案,利用了内置的标准库函数进行清晰高效的实现。

package main

import (
	"fmt"
	"math"
)

func minTimeToVisitAllPoints(points [][]int) int {
	totalTime := 0
	// 从第二个点开始遍历
	for i := 1; i < len(points); i++ {
		prev := points[i-1]
		curr := points[i]
		
		// 计算横纵坐标的绝对差值
		deltaX := math.Abs(float64(curr[0] - prev[0]))
		deltaY := math.Abs(float64(curr[1] - prev[1]))
		
		// 取两者中的较大值作为该段路径的耗时
		if deltaX > deltaY {
			totalTime += int(deltaX)
		} else {
			totalTime += int(deltaY)
		}
	}
	return totalTime
}

func main() {
	// 测试示例 1
	points := [][]int{{1, 1}, {3, 4}, {-1, 0}}
	result := minTimeToVisitAllPoints(points)
	fmt.Println(result) // 预期输出: 7
}

上述代码逻辑严谨且易读。对于每一个连续的点对,分别计算出横向位移与纵向位移,然后取最大值累加到总时间变量中,完美契合题意要求。

以上就是Go语言解LeetCode1266访问所有点的最小时间的详细内容,更多关于Go算法题解的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。