题目链接:
T1:976. 三角形的最大周长
T2:1779. 找到最近的有相同 X 或 Y 坐标的点
class Solution {
public int largestPerimeter(int[] nums) {
Arrays.sort(nums);
for(int i=nums.length-1;i>=2;i--){
if(nums[i-2]+nums[i-1]>nums[i]){
return nums[i-2]+nums[i-1]+nums[i];
}
}
return 0;
}
}
将min设置为一个足够大的值,设置index为-1,然后for循环所有的points数组里面的点,计算每个有效点p到点(x,y)的manhattan距离,跟minManhattanDist(初始化为Integer.MAX_VALUE)比较,如果比minManhattanDist当前的值小,就更新minManhattanDist的值,同时保存index值(初始化为-1)。循环完毕index的值即为符合条件的最小下标值。有效点判断也很简单,只要p[0] == x 或者p[1] == y即可。
class Solution {
public int nearestValidPoint(int x, int y, int[][] points) {
int min = Integer.MAX_VALUE;
int index = -1;
for(int i=0,j=0;i<points.length;i++){
int x1 = points[i][0];
int y1 = points[i][1];
if(x==points[i][0]||y==points[i][1]){
int dis = Math.abs(x1 - x) + Math.abs(y1 - y);
if(dis < min){
min = dis;
index = i;
}
}
}
return index;
}
}