Go语言题解LeetCode1266访问所有点的最小时间示例

 更新时间:2023年01月05日 14:28:25   作者:刘09k11  
这篇文章主要为大家介绍了Go语言题解LeetCode1266访问所有点的最小时间示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

题目描述

1266. 访问所有点的最小时间 - 力扣(LeetCode)

平面上有 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

思路分析

根据题意和图可知道

如果两点的x,y值的差值的绝对值相等

则绝对值就是用的时间,如果绝对值不相等

则时间为x,y的差值中的绝对值较小的一个值再加上大的差值减去小的差值的差

AC 代码

class Solution {
    public int minTimeToVisitAllPoints(int[][] points) {
        // 会用到的时间
        int time = 0;
        // 上一个点的位置
        int[]  prev = null;
        // 遍历数组
        for (int[] item : points) {
            // 只有上个点有数据才处理
            if (!Objects.isNull(prev)) {
                // 获取到x,y坐标的值
                int xValN = item[0];
                int yValN = item[1];
                int xValP = prev[0];
                int yValP = prev[1];
                // 取到差值的绝对值
                int xDifference = getAbsoluteValue(xValN - xValP);
                int yDifference = getAbsoluteValue(yValN - yValP);
                // 取差值的最小值
                int minValue = Math.min(xDifference, yDifference);
                // 取x,y坐标差值的差值的绝对值
                int moreValue = getAbsoluteValue(xDifference - yDifference);
                // 累加时间
                time += (minValue + moreValue);
            }
            // 给上个点赋值
            prev = item;
        }
        return time;
    }
    private int getAbsoluteValue(int value) {
        return value > 0 ? value : (value * -1);
    }
}

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

相关文章

  • GO语言基本类型String和Slice,Map操作详解

    GO语言基本类型String和Slice,Map操作详解

    这篇文章主要为大家介绍了GO语言基本类型String和Slice,Map操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Go语言转换所有字符串为大写或者小写的方法

    Go语言转换所有字符串为大写或者小写的方法

    这篇文章主要介绍了Go语言转换所有字符串为大写或者小写的方法,实例分析了ToLower和ToUpper函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • golang http使用踩过的坑与应对方式

    golang http使用踩过的坑与应对方式

    这篇文章主要介绍了golang http使用踩过的坑与应对方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Golang实现对map的并发读写的方法示例

    Golang实现对map的并发读写的方法示例

    这篇文章主要介绍了Golang实现对map的并发读写的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • idea搭建go环境实现go语言开发

    idea搭建go环境实现go语言开发

    这篇文章主要给大家介绍了关于idea搭建go环境实现go语言开发的相关资料,文中通过图文介绍以及代码介绍的非常详细,对大家学习或者使用go具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • golang 实现对Map进行键值自定义排序

    golang 实现对Map进行键值自定义排序

    这篇文章主要介绍了golang 实现对Map进行键值自定义排序,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • go编译so库让python引用编译后没有.h文件的问题

    go编译so库让python引用编译后没有.h文件的问题

    有时python需要引用go的一些开源库,这时就需要go编译成python可调用的库,本文给大家介绍了go编译so库让python引用,编译后没有.h文件的问题,需要的朋友可以参考下
    2024-02-02
  • golang metrics各个指标含义讲解说明

    golang metrics各个指标含义讲解说明

    这篇文章主要为大家介绍了golang metrics各个指标含义讲解说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Go语言异常处理案例解析

    Go语言异常处理案例解析

    这篇文章主要介绍了Go语言异常处理案例解析,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Go语言设计实现在任务栏里提醒你喝水的兔子

    Go语言设计实现在任务栏里提醒你喝水的兔子

    这篇文章主要为大家介绍了Go语言设计实现在任务栏里提醒你喝水的兔子示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论