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

方法一:遍历

时间复杂度 $O(n)$,空间复杂度 $O(1)$,n 表示数组 points 的长度。

func nearestValidPoint(x int, y int, points [][]int) int {
	ans, minLen := -1, 1<<31-1
	for i := 0; i < len(points); i++ {
		a, b := points[i][0], points[i][1]
		if (a == x || b == y) && abs(x, y, a, b) < minLen {
			ans, minLen = i, abs(x, y, a, b)
		}
	}
	return ans
}

func abs(x, y, a, b int) int {
	ans1, ans2 := x-a, y-b
	if ans1 < 0 {
		ans1 = -ans1
	}
	if ans2 < 0 {
		ans2 = -ans2
	}
	return ans1 + ans2
}