题目如下:
题目乍一看好像挺吓人,其实仔细观察之后不难发现规律:
两个点之间的访问时间=max(两点横坐标之差的绝对值,两点纵坐标之差的绝对值)
如果存在多个点,那么累加即可。
第一次提交:
int minTimeToVisitAllPoints(int** points, int pointsSize, int* pointsColSize){
int sum = 0,t1,t2;
for(int i=1;i<pointsSize;i++)
{
t1 = abs(points[i][0]-points[i-1][0]);//横坐标之差的绝对值
t2 = abs(points[i][1]-points[i-1][1]);//纵坐标之差的绝对值
if(t1>=t2)
sum += t1;
else
sum += t2;
}
return sum;
}
第一次提交的结果不算差,但还可以更好,毕竟老是使用if-else显得有点低端,而且甚至连t1和t2都不用作为中间变量了,但为了方便看,还是留了t1和t2。于是修改如下:
int minTimeToVisitAllPoints(int** points, int pointsSize, int* pointsColSize){
int sum = 0,t1,t2;
for(int i=1;i<pointsSize;i++)
{
t1 = abs(points[i][0]-points[i-1][0]);//横坐标之差的绝对值
t2 = abs(points[i][1]-points[i-1][1]);//纵坐标之差的绝对值
sum += t1>t2?t1:t2;
}
return sum;
}
嗯,这样就好多了。