数组:[1266访问所有点的最小时间 ]

这是我的leetcode第一题,说实话当时看题没看懂,然后看了看题解,还是没懂,后来又琢磨题的输入输出,思考了会儿才明白题的意思【写到此处面红耳赤】

大致题意:二维数组中的几组数字,其中每组是两个数字(可理解对应了x,y轴),从第一组数字依次变化到最后一组,一共最少需要增减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 秒

第一次代码:

 1 import java.lang.*;
 2 public class Solution {
 3     public static int minTimeToVisitAllPoints(int[][] points) {
 4         int num=0;
 5         for(int i=0;i<points.length-1;i++){
 6             System.out.println("~~~~~~"+i);
 7             int x1=points[i][0];
 8             int y1=points[i][1];
 9             int x2=points[i+1][0];
10             int y2=points[i+1][1];
11             System.out.println("x1:"+x1+",y1:"+y1);
12             System.out.println("x2:"+x2+",y2:"+y2);
13             num+=Math.max(Math.abs(points[i][1]-points[i+1][1]),Math.abs(points[i][0]-points[i+1][0]));
14         }
15         return num;
16     }
17     public static void main(String[] args){
18     int [][]arr=new int[][]{{1,1},{3,4},{-1,0}};
19     int [][]arr1=new int[][]{{3,2},{-2,2}};
20     int res=minTimeToVisitAllPoints(arr);
21     System.out.print(res);
22     }
23 }

最终代码:

1 class Solution {
2     public int minTimeToVisitAllPoints(int[][] points) {
3         int num=0;
4         for(int i=0;i<points.length-1;i++){
5             num+=Math.max(Math.abs(points[i][1]-points[i+1][1]),Math.abs(points[i][0]-points[i+1][0]));
6         }
7         return num;
8     }
9 }

总结:

最终代码在执行用时和内存消耗上都有提升:循环内的打印语句延长了执行用时,循环内变量的声明增加了内存消耗。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-time-visiting-all-points

猜你喜欢

转载自www.cnblogs.com/fangyanr/p/11983300.html