一网友在各种找工作被拒之后,突然刷到自己学校的保安处在招人,结果抱着试一试的心态投递了简历,结果直接被拒,理由是学历不够,人家招聘的要求是本科生,而自己是大专生。

一个专科学校招的保安都要求是本科,不知道招的保洁要求啥学历。我印象中大学的这些闲职一般是不招外人的,很多都是家属岗。比如图书馆里面的很多工作人员,还有宿舍的管理员,还有保安等等。

打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片
打开网易新闻 查看精彩图片

--------------下面是今天的算法题--------------

来看下今天的算法题,这题是LeetCode的第1266题:访问所有点的最小时间,难度是简单。

平面上有 n 个点,点的位置用整数坐标表示 points[i] = [xi, yi] 。请你计算访问所有这些点需要的最小时间(以秒为单位)。你需要按照下面的规则在平面上移动,每一秒内,你可以:

1,沿水平方向移动一个单位长度,或者

2,沿竖直方向移动一个单位长度,或者

3,跨过对角线移动 sqrt(2) 个单位长度(可以看作在一秒内向水平和竖直方向各移动一个单位长度)。

4,必须按照数组中出现的顺序来访问这些点。

5,在访问某个点时,可以经过该点后面出现的点,但经过的那些点不算作有效访问。

示例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 秒

  • points.length == n

  • 1 <= n <= 100

  • points[i].length == 2

  • -1000 <= points[i][0], points[i][1] <= 1000

问题分析

注意这题说的是按照数组中给出的顺序来访问这些点,从一个点到另一个点需要的最小时间实际上就是图论中两点的切比雪夫距离,我们在,对切比雪夫距离也有过介绍,也就是两个点取横向和纵向距离的最大值。

打开网易新闻 查看精彩图片

JAVA:

public int minTimeToVisitAllPoints(int[][] points) {
int ans = 0;
for (int i = 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]));
return ans;
}

C++:

public:
int minTimeToVisitAllPoints(vector> &points) {
int ans = 0;
for (int i = 1; i < points.size(); i++)
ans += max(abs(points[i][0] - points[i - 1][0]),
abs(points[i][1] - points[i - 1][1]));
return ans;
}

笔者简介

博哥,真名:王一博,毕业十多年, 作者,专注于 数据结构和算法 的讲解,在全球30多个算法网站中累计做题2000多道,在公众号中写算法题解900多题,对算法题有自己独特的解题思路和解题技巧。