常用: 学生 教职工 校友 OA系统 邮件系统 VPN系统 图书馆 智慧门户 EN
首页 世界杯直播 2026年世界杯官网 2026-05-20: 最佳可到达的塔。用go道话, 给定

2026年世界杯官网 2026-05-20: 最佳可到达的塔。用go道话, 给定一个二维整数数组 to

发布时间:2026-05-20 来源:世界杯直播 作者:admin 浏览:103

2026年世界杯官网 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,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:遍历每一座塔,一一判断是否妥当要求

函数会轮番查验每一座塔,2026年世界杯官网对每一座塔扩张以下判断经过:

查验第 1 座塔:(1,2,5)

2. 判断是否可到达:1 ≤ 2 → 可到达

亚搏app2026世界杯中国官方下载

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 (

"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 2026年世界杯官网