leetcode编程题3

1266. 访问所有点的最小时间


原题链接:https://leetcode-cn.com/problems/minimum-time-visiting-all-points/





 


思路分析:对于平面上的两个点 x = (x0, x1) 和 y = (y0, y1),设它们横坐标距离之差为 dx = |x0 - y0|,纵坐标距离之差为 dy = |x1 - y1|,对于任意一种情况,从 x 移动到 y 的最少次数为 dxdy 中的较大值 max(dx, dy),这也被称作 xy 之间的切比雪夫距离。

代码:

class Solution {
    public int minTimeToVisitAllPoints(int[][] points) {
     int x0 = points[0][0], x1 = points[0][1];
        int sum= 0;
        for (int i = 1; i < points.length; i++) {
            int y0 = points[i][0], y1 = points[i][1];
            sum+= Math.max(Math.abs(x0 - y0), Math.abs (x1 - y1));
              x0 = y0;
              x1 = y1;
        }
        return sum;

    }
}

1351. 统计有序矩阵中的负数


原文链接:

https://leetcode-cn.com/problems/count-negative-numbers-in-a-sorted-matrix/




思路分析:直接进行查找小于0的数。
代码:

class Solution {
    public int countNegatives(int[][] grid) {
     int count=0;
     for(int i=0;i<grid.length;i++){
         for(int j=0;j<grid[i].length;j++){
             if(grid[i][j]<0){
                 count++;
             }
             }
         }
        return count;
     }
}

1252. 奇数值单元格的数目


原文链接:https://leetcode-cn.com/problems/cells-with-odd-values-in-a-matrix/




思路分析:建立新的一维数组,用来记录行列次数,对indices数组中 行列出现的次数进行记录,最后在需求的二维数组中相加判断时否为奇数。
代码:

class Solution {
    public int oddCells(int n, int m, int[][] indices) {
        int[] row=new int[n];
        int[] col=new int[m]; 
        for(int i=0;i<indices.length;i++) {
        	row[indices[i][0]]++;
        	col[indices[i][1]]++;
        }
        int oddnum=0;
        for(int i=0;i<n;i++)
        	for(int j=0;j<m;j++) {
        		if((row[i]+col[j])%2 != 0)
        			oddnum++;
        	}
        return oddnum;
    }
}

1304. 和为零的N个唯一整数


原文链接:https://leetcode-cn.com/problems/find-n-unique-integers-sum-up-to-zero/



思路分析: 对于前n-1个元素为0,1,2,3一直到n-1,求前n-1个数的和,第n个数位负的前n-1个数的和,此时前n-1个数加上第n个数和为0。

代码:

class Solution {
    public int[] sumZero(int n) {
          int[] arr=new int[n];
           int sum=0;
           for(int i=0;i<n-1;i++){
               arr[i]=i;
               sum+=arr[i];
           }
           arr[n-1]=-sum;
           return arr;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值