leetcode 22-03-21

今日份 leetcode,只做了两题

  • 976. 三角形的最大周长
  • 1779. 找到最近的有相同 X 或 Y 坐标的点


976. 三角形的最大周长

解题思路

先排序,后比较,满足三角形条件后返回

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// C
int cmp(void *a, void *b){
return *(int *)b - *(int *)a;
}

int largestPerimeter(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(int),cmp);
for(int i = 0; i < numsSize - 2 ; i++){
if(nums[i + 2] + nums[i + 1] > nums[i]){
return nums[i] + nums[i + 1] + nums[i + 2];
}
}
return 0;
}

1779. 找到最近的有相同 X 或 Y 坐标的点

解题思路

计算每个符合条件的坐标距离,并记录下标,当遇到更小的距离时才替换记录的下标,否则不改变记录的下标

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// C
int nearestValidPoint(int x, int y, int** points, int pointsSize, int* pointsColSize){
int dist = INT_MAX;
int x1 = -1;
for(int i = 0; i < pointsSize; i++){
if (points[i][0] == x || points[i][1] == y){
int x2 = abs(points[i][0] - x);
int y2 = abs(points[i][1] - y);
if((x2 + y2) < dist){
dist = (x2 + y2) < dist ? (x2 + y2) : dist;
x1 = i;
}
}
}
return x1;
}