2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的标签。 如果一个正
2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的标签。
如果一个正方形的中心在 (0, 0),边与坐标轴平行,并且内部没有标签相同的两个点,则称这个正方形为“合法”的。
你的任务是返回可以被“合法”正方形所包含的最多点数。
注意:
1.如果一个点位于正方形的边上或其内部,则视为在正方形内。
2.正方形的边长可以为零。
1 <= s.length, points.length <= 100000。
points[i].length == 2。
-1000000000 <= points[i][0], points[i][1] <= 1000000000。
s.length == points.length。
points 中的点坐标互不相同。
s 只包含小写英文字母。
答案2024-12-18:
题目来自leetcode3143。
大体步骤如下:
1.创建一个 map 来存储每个标签对应的可能存在的最短距离。
2.遍历给定的每个点和其对应的标签:
计算这个点到 (0, 0) 的距离。
检查是否存在其他标签对应的最短距离小于当前点到 (0, 0) 的距离,并将可能的最短距离更新到 map 中。
3.统计每个标签对应的最短距离,并最终找到可以被“合法”正方形所包含的最多点数。
时间复杂度:假设有 n 个点,则遍历所有点需要 O(n) 的时间复杂度,因此总体时间复杂度是 O(n)。
空间复杂度:使用了一个 map 存储每个标签的最短距离,以及两个长度为 26 的数组来存储最短距离,因此额外空间复杂度为 O(1)。
Go完整代码如下:
package main
import (
"fmt"
)
func maxPointsInsideSquare(points [][]int, s string) int {
min1 := make([]int, 26)
for i := range min1 {
min1[i] = 1000000001
}
min2 := 1000000001
for i, ch := range s {
x, y := points[i][0], points[i][1]
j := int(ch - 'a')
d := max(abs(x), abs(y))
if d < min1[j] {
min2 = min(min2, min1[j])
min1[j] = d
} else if d < min2 {
min2 = d
}
}
res := 0
for _, d := range min1 {
if d < min2 {
res++
}
}
return res
}
func abs(a int) int {
if a > 0 {
return a
}
return -a
}
func main() {
points := [][]int{{2, 2}, {-1, -2}, {-4, 4}, {-3, 1}, {3, -3}}
s := "abdca"
fmt.Println(maxPointsInsideSquare(points, s))
}

Rust完整代码如下:
fn max_points_inside_square(points: Vec<Vec<i32>>, s: &str) -> i32 {
let mut min1: Vec<i32> = vec![1000000001; 26];
let mut min2 = 1000000001;
for (i, ch) in s.chars().enumerate() {
let (x, y) = (points[i][0], points[i][1]);
let j = (ch as u8 - b'a') as usize;
let d = max(x.abs(), y.abs());
if d < min1[j] {
min2 = min2.min(min1[j]);
min1[j] = d;
} else if d < min2 {
min2 = d;
}
}
let mut res = 0;
for &d in &min1 {
if d < min2 {
res += 1;
}
}
res
}
fn max(a: i32, b: i32) -> i32 {
if a > b {
a
} else {
b
}
}
fn main() {
let points = vec![vec![2, 2], vec![-1, -2], vec![-4, 4], vec![-3, 1], vec![3, -3]];
let s = "abdca";
println!("{}", max_points_inside_square(points, s));
}

2024-12-18:正方形中的最多点数。用go语言,给定一个二维数组 points 和一个字符串 s,其中 points[i] 表示第 i 个点的坐标,s[i] 表示第 i 个点的标签。 如果一个正的更多相关文章
- php中向前台js中传送一个二维数组
在php中向前台js中传送一个二维数组,并在前台js接收获取其中值的全过程方法: (1),方法说明:现在后台将数组发送到前台 echo json_encode($result); 然后再在js页面中的 ...
- <转载>c++中new一个二维数组
原文连接 在c++中定义一个二维数组时有多种方式,下面是几种定义方式的说明:其中dataType 表示数据类型,如int byte long... 1.dataType (*num)[n] = n ...
- Java练习小题_求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。
要求说明: 题目:求一个3*3矩阵对角线元素之和,矩阵的数据用行的形式输入到计算机中 程序分析:利用双重for循环控制输入二维数组,再将 a[i][i] 累加后输出. 实现思路: [二维数组]相关知识 ...
- C#编写程序,找一找一个二维数组中的鞍点
编写程序,找一找一个二维数组中的鞍点(即该位置上的元素值在行中最大,在该列上最小.有可能数组没有鞍点).要求: 1.二维数组的大小.数组元素的值在运行时输入: 2.程序有友好的提示信息. 代码: us ...
- C#中如何获取一个二维数组的两维长度,即行数和列数?以及多维数组各个维度的长度?
如何获取二维数组中的元素个数呢? int[,] array = new int[,] {{1,2,3},{4,5,6},{7,8,9}};//定义一个3行3列的二维数组int row = array. ...
- python 一个二维数组和一个整数,判断数组中是否含有该整数
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序. 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. de ...
- 找出一个二维数组中的"鞍点",即该位置上的元素在该行中最大,在该列中最小(也可能没有"鞍点"),打印有关信息.(提示:注意特殊情况:没鞍点或多个鞍点)
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { ][] = {}; ;i < ...
- PHP如何随机获取一个二维数组中的一个值
获取一个数组: $awardid_list=pdo_fetchall('select id from '.tablename($this->table_award)); 这是微擎的写法哈,意思就 ...
- JAVA中如何创建一个二维数组,然后给二维数组赋值!
普通的赋值是:int[][] i = {{1,2,3},{2,3,4},{1,3,4}}; 如果是其他情况可以这样:比如: import java.util.* public class TT(){ ...
- 剑指 Offer 04. 二维数组中的查找
链接:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/ 标签:数组.双指针.二分 题目 在一个 n * m ...
随机推荐
- 2024年常用的Python可视化框架及开源项目
以下是 2024 年一些较为流行的 Python 可视化框架及开源项目: Matplotlib 框架声明:是 Python 中最基础.最广泛使用的可视化库之一,用于创建各种静态.动态和交互式图表. 官 ...
- 第41天:WEB攻防-ASP应用&HTTP.SYS&短文件&文件解析&Access注入&数据库泄漏
#ASP-中间件-CVE&短文件&解析&写权限 -HTTP.SYS(CVE-2015-1635) 1.漏洞描述 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) ...
- 第17天:信息打点-语言框架&开发组件&FastJson&Shiro&Log4j&SpringBoot等
框架:简单代码的一个整合库,如果使用框架就只需要学习使用框架调用即可 如:文件上传功能是需要很多代码来实现的,框架把这个代码进行封封装,调用即可 影响:如果采用框架开发,代码的安全性是取决于框架的过滤 ...
- Haproxy详解以及基于Haproxy的高可用实战
1.Haproxy与Keepalived VRRP 介绍 软件:haproxy 主要是做负载均衡的7层,也可以做4层负载均衡 apache也可以做7层负载均衡,但是很麻烦.实际工作中没有人用. ngi ...
- 使用 Docker 部署 MySql
前言 虽然不建议将需要持久化的数据保存在容器中,但是自己平时做个小项目玩玩还是没什么问题的. 拉取镜像 docker pull mysql 不加 tag 的话默认从 DockerHub 拉取最新版本的 ...
- redis 配置文件 - 启动redis 使用文件配置启动
# Redis configuration file example. # # Note that in order to read the configuration file, Redis mus ...
- RMI,SOA,微服务
什么是SOA SOA(Service-Oriented Architecture),中文全称:面向服务的架构. SOA提倡将不同应用程序的业务功能封装成"服务"并宿主起来,通常以接 ...
- CentOS环境下OpenSSH9.8p1升级实践
安装Telnet服务 为了避免升级OpenSSH导致服务器不可连接.需要先下载安装Telnet组件.升级期间使用Telnet作为升级期间的服务器连接方式. 先查询telnet是否安装 rpm -qa ...
- 【2024.08.15】NOIP2024暑假集训模拟赛(13)
[2024.08.15]NOIP2024暑假集训模拟赛(13) T1 先找能构成回文的最长前缀和后缀(长度相同的),然后在任意一边的基础上扩展,看能否接一个回文串. #include<bits/ ...
- 如何用 Spring AI + Ollama 构建生成式 AI 应用
为了构建生成式AI应用,需要完成两个部分: AI大模型服务:有两种方式实现,可以使用大厂的API,也可以自己部署,本文将采用ollama来构建 应用构建:调用AI大模型的能力实现业务逻辑,本文将采用S ...