赛马投注(中国)app下载 2026-05-20: 最佳可到达的塔。用go话语, 给定一个二维整数数组 to

2026-05-20:最佳可到达的塔。用go话语,给定一个二维整数数组 towers,其中每个元素 towers[i] = [x_i, y_i, q_i] 示意第 i 座塔的坐标与质地因子。
再给定一个整数数组 center = [c_x, c_y] 示意你的地方位置,以及一个整数 radius。
判断规矩:当某座塔与 center 的曼哈顿距离得志
时,这座塔被以为是“可到达”。
指标:在统共可到达的塔里,采用:
1.质地因子 q_i 最大的塔;
2.淌若有多个塔的 q_i 接头,则在它们中采用坐标按字典序最小的那一个(先比拟 x,x 更小者更优;若 x 接头,再比拟 y,y 更小者更优)。
淌若莫得任何塔可到达,则复返 [-1, -1];不然复返该选中塔的坐标 [x_i, y_i]。
1
towers[i] = [xi, yi, qi]。
center = [cx, cy]。
0
0
输入: towers = [[1,2,5], [2,1,7], [3,1,9]], center = [1,1], radius = 2。
输出: [3,2026世界杯预选赛下单中国体彩官网1]。
诠释注解:
统共塔齐是可到达的。最大质地因子为 9,对应塔 [3, 1]。
题目来独力扣3809。
一、轨范举座引申轨范
轨范1:轨范启动,投入主函数 main
轨范从 main 函数动手运行,最初准备好题目给出的统共输入数据:
1. 塔数组 towers:存储了 3 座塔的信息
2. 中心位置 center:你的位置坐标 (1,1)
3. 半径 radius:可到达的最大曼哈顿距离 2
轨范2:调用中枢函数 bestTower,动手筛选最优塔
轨范把统共输入数据传入 bestTower 函数,认真动手筹算。
子轨范 2.1:开动化筛选变量(建设开动气象)
函数一动手会创建 3 个要道变量,用来纪录刻下最优塔的信息:
1. maxQ:纪录刻下找到的最大质地因子,开动值设为 -1(因为质地因子最小是 0,-1 代表还没找到任何可到达塔)
2. minX:纪录最优塔的 x 坐标,开动 -1
3. minY:纪录最优塔的 y 坐标,开动 -1
这三个变量会在遍历过程中不休更新,最终保存最优塔的信息。
子轨范 2.2:遍历每一座塔,逐一判断是否合适条款
函数会按序检查每一座塔,赛马投注(中国)app下载对每一座塔引申以下判断历程:
检查第 1 座塔:(1,2,5)
2. 判断是否可到达:1 ≤ 2 → 可到达
3. 对比刻下最优:
• 刻下最大质地因子是 -1,5 更大
• 因此更新最优纪录:maxQ=5,minX=1,minY=2
检查第 2 座塔:(2,1,7)
2. 判断是否可到达:1 ≤ 2 → 可到达
3. 对比刻下最优:
• 刻下最大质地因子是 5,7 更大
• 因此更新最优纪录:maxQ=7,minX=2,minY=1
检查第 3 座塔:(3,1,9)
2. 判断是否可到达:2 ≤ 2 → 可到达
3. 对比刻下最优:
• 刻下最大质地因子是 7,9 更大
• 因此更新最优纪录:maxQ=9,minX=3,minY=1
子轨范 2.3:遍历完成,复返恶果
统共塔检查完结后:
• maxQ = 9(不是 -1,诠释找到可到达塔)
• 最优坐标是 (3,1)
函数径直复返 [3, 1]
轨范3:主函数收受恶果并打印
main 函数拿到恶果 [3,1],输出到截止台,轨范杀青。
二、要道筛选规矩(严格按题目要求)
遍历每一座可到达塔时,唯有得志以下任一条款,才会更新最优塔:
1. 刻下塔的质地因子 > 纪录的最大质地因子
2. 质地因子绝顶,且:
• 刻下塔 x 坐标 < 纪录的 x 坐标
• 不详 x 绝顶,刻下塔 y 坐标 < 纪录的 y 坐标
淌若莫得任何塔可到达,最终复返 [-1, -1]。
三、技艺复杂度 & 罕见空间复杂度
1. 技艺复杂度
• 轨范只作念了一次齐全遍历,逐一检查每一座塔
• 遍历次数 = 塔的数目 n
• 每一次遍历里面只作念:筹算距离、判断、赋值,齐是常数技艺 O(1)
• 总技艺复杂度:O(n)
n 是 towers 数组的长度(塔的数目)
即使 n 达到 10 万,这个算法也能高效运行
2. 罕见空间复杂度
• 轨范只创建了固定数目的变量:cx、cy、maxQ、minX、minY、轮回临时变量等
• 这些变量的数目不随塔的数目 n 变化
• 莫得使用动态数组、哈希表等随输入变大的数据结构
• 总数外空间复杂度:O(1)(常数级空间)
牵记
1. 引申过程:开动化 → 遍历每座塔 → 筹算曼哈顿距离 → 按规矩更新最优塔 → 复返恶果
2. 技艺复杂度:O(n)(线性遍历)
3. 罕见空间复杂度:O(1)(仅使用固定变量)
Go齐全代码如下:
package main
import (
米乐体育2026世界杯中国官网"fmt"
)
func bestTower(towers [][]int, center []int, radius int) []int {
cx, cy := center[0], center[1]
maxQ, minX, minY := -1, -1, -1
for _, t := range towers {
x, y, q := t[0], t[1], t[2]
if abs(x-cx)+abs(y-cy)
(q > maxQ 赛马投注(中国)app下载