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
的最少次数为 dx
和 dy
中的较大值 max(dx, dy)
,这也被称作 x
和 y
之间的切比雪夫距离。
代码:
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;
}
}