力扣——3143.正方形中的最多点数

题目:

自己的题解(史):

PS:自己看了好几遍才看懂题目,然后想看题解,但是又看到了“标签”是
于是靠着自己效率极低的写了出来。

思路:二分

        首先利用map,将每个坐标和标签进行哈希对应。
        然后找到正方形的最大值,即坐标中数值最大的数字(这里有个坑,要注意负数的存在)              最后二分确定正方形的边界值,判断条件是利用set查看里面的坐标是否存在标签重复。       (注意二分算法不要死循环)
        确定边界值后,直接循环points数组,看看里面有几个点在边界内就行。

代码:

class Solution {
public:int maxPointsInsideSquare(vector<vector<int>>& points, string s) {// 首先是哈希键值对建立(map<vector<int>,char>)// 二分法来确定正方形的边长(初始为坐标最大的值)// 收缩条件是判断在正方形里的坐标点是否标签唯一(unordered_set)int maxl = 0;map<vector<int>, char> m;int len = points.size();for (int i = 0; i < len; i++) {m.insert(make_pair(points[i], s[i]));int t1, t2;   //易错!!要考虑复数之间的大小比较if (points[i][0] < 0)t1 = -points[i][0];elset1 = points[i][0];if (points[i][1] < 0)t2 = -points[i][1];elset2 = points[i][1];int tmp = t1 > t2 ? t1 : t2;maxl = maxl > tmp ? maxl : tmp;}int left = 0, right = maxl, mid;while (left < right) {mid = left + (right - left + 1) / 2; //?怎么才能不写成死循环?// 判断符合吗bool fuhe = true;unordered_set<char> se;for (int i = 0; i < len; i++) {if (points[i][0] <= mid && points[i][0] >= -mid &&points[i][1] <= mid && points[i][1] >= -mid) {if (se.find(m[points[i]]) == se.end()) {se.insert(m[points[i]]);} else {fuhe = false;break;}}}if (fuhe) {left = mid;} else {right = mid - 1;}}int jieguo = 0;for (int i = 0; i < len; i++) {if (points[i][0] <= left && points[i][0] >= -left &&points[i][1] <= left && points[i][1] >= -left) {jieguo++;}}return jieguo;}
};

复杂度

结果:

官方题解:

思路:维护次小距离的最小值

  • 定义正方形的半径

    • 正方形的半径定义为边长的一半。
    • 每个点 (x,y)(x, y)(x,y) 所在正方形的半径为点 (x,y)(x, y)(x,y) 到原点 (0,0)(0, 0)(0,0) 的「切比雪夫距离」,即 max⁡(∣x∣,∣y∣)\max(\lvert x \rvert, \lvert y \rvert)max(∣x∣,∣y∣)。
  • 计算最小半径和次小半径

    • 对于每个字符,计算字符到原点的最小的半径,并维护所有字符的次小半径。
    • 如果一个字符的半径小于次小半径,那么这个字符所对应的点可以放在合法正方形内。
  • 合法正方形的定义

    • 对于每个字符,如果其半径小于次小半径,那么它可以在合法正方形内。
  • 统计合法正方形内的点数

    • 最后遍历所有字符的最小距离,返回在合法正方形内的点数。

代码:

class Solution {
public:int maxPointsInsideSquare(vector<vector<int>>& points, string s) {// 用于存储每个字符的最小半径,初始为一个很大的数vector<int> min1(26, 1000000001);// 用于存储所有字符的次小半径,初始为一个很大的数int min2 = 1000000001;// 字符串的长度,即点的数量int n = s.length();// 遍历每个点,计算其半径并更新最小半径和次小半径for (int i = 0; i < n; ++i) {int x = points[i][0], y = points[i][1], j = s[i] - 'a';// 计算点到原点的切比雪夫距离int d = max(abs(x), abs(y));if (d < min1[j]) {// 如果当前半径小于最小半径,更新次小半径并设置新的最小半径min2 = min(min2, min1[j]);min1[j] = d;} else if (d < min2) {// 如果当前半径介于最小半径和次小半径之间,更新次小半径min2 = d;}}// 统计合法正方形内的点数int res = 0;for (int d : min1) {if (d < min2) {++res;}}return res;}
};

小结:

看懂了官方的题解,觉得自己的思路还行就是代码垃圾。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/391768.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Es6常用的一些数组处理方法

在平时的开发中&#xff0c;我们很多时候用到数组结构数据&#xff0c;那么如何高效处理数组是可以提高开发效率的&#xff0c;现在越来越多人使用es6&#xff0c;那么它的很多方法简化了我们对数据的操作&#xff0c;比如以前数组循环用for循环写比较多的代码&#xff0c;现在…

20 注意力机制—注意力机制在seq2seq

1.使用注意力机制的seq2seq 注意力机制在 NLP 中的应用,也是最早的工作之一动机 在机器翻译的时候,每个生成的词可能相关于源句子中不同的词在语言翻译的时候,中文和英文之间的翻译可能会存在倒装,但是可能在西方语言之间,相同意思的句子中的词的位置可能近似地是对应的,…

Linux命令用法

文章目录 前言一、Linux基础命令1. Linux目录结构2. Linux命令入门3. 目录切换相关命令&#xff08;cd、pwd&#xff09;4. 相对路径、绝对路径和特殊路径符5. 创建目录命令&#xff08;(mkdir&#xff09;6. 文件操作命令part1(touch、cat、more&#xff09;7. 文件操作命令pa…

端侧模型与端到端模型,两者是一个东西吗

端侧模型 专为在端侧设备上运行而设计的人工智能模型&#xff0c;它们通常具有较小的模型参数量&#xff0c;以适应端侧设备的计算能力和内存限制。端侧模型可以快速响应&#xff0c;保护用户隐私&#xff0c;并且无需依赖云端算力&#xff0c;因此在消费电子产业中具有重要的…

学习记录——day25 多线程编程 临界资源 临界区 竞态 线程的同步互斥机制(用于解决竟态)

目录 ​编辑 一、多进程与多线程对比 二、 临界资源 临界区 竞态 例1&#xff1a;临界资源 实现 输入输出 例2&#xff1a;对临界资源 进行 减减 例子3&#xff1a;临界资源抢占使用 三、线程的同步互斥机制&#xff08;用于解决竟态&#xff09; 3.1基本概念 3.2线…

C# 实现改造 GooFlow 流程图插件与数据库应用的结合

目录 关于 GooFlow 功能需求 范例运行环境 设计数据表 流程项目表 流程项目节点明细表 流程项目节点审批人表 人员信息表 示例代码 流程图主功能 设置审批人信息 运行结果演示 总结 关于 GooFlow GooFlow 一个基于 Jquery/FontAwesome 的流程图/架构图画图插件&…

Spring File Storage(文件的对象存储)框架基本使用指南

概述 本文仅作为快速入门&#xff0c;深入学习及使用详见官网 云存储 在开发过程当中&#xff0c;会使用到存文档、图片、视频、音频等等&#xff0c;这些都会涉及存储的问题&#xff0c;文件可以直接存服务器&#xff0c;但需要考虑带宽和存储空间&#xff0c;另外一种方式…

漏洞挖掘 | src中一次证书站有趣的SQL注入

一、确定站点 按照以前文章中提到的寻找可进站测试的思路&#xff0c;找到了某证书站的一处站点&#xff0c;通告栏中写明了初始密码的结构&#xff0c;因此我们可通过信息搜集进入该站点(可以考虑去搜集比较老的学号&#xff0c;因为这样的账号要么被冻结&#xff0c;要么就是…

AMD Product Specifications - AMD 产品规格汇总

AMD Product Specifications - AMD 产品规格汇总 1. Desktop, Laptop and Workstation Processor Specifications (台式处理器、笔记本电脑处理器和工作站处理器规格)2. Server Processor Specifications (服务器处理器规格)3. Embedded Processor Specifications (嵌入式处理器…

土耳其射击运动员尤素夫迪凯克在巴黎奥运会上成为互联网热门人物

这名51岁的男子以自己的方式获得了第二名,这对他的祖国来说是一个历史性的时刻。 这位冷静沉着的土耳其手枪射击运动员周二在 2024 年巴黎奥运会上获得银牌&#xff0c;在网上吸引了众多粉丝。 尤素夫迪克与他的搭档塞夫瓦尔伊莱达塔尔汉在混合团体 10 米气手枪比赛中获得第二…

jupyter notebook安装

1.安装 pip install notebook 2.显示配置文件&#xff1a; jupyter notebook --generate-config 3.修改代码路径&#xff1a; 编辑配置文件C:\Users\a\.jupyterjupyter_notebook_config.py 4.运行 jupyter notebook 会自动弹出http://localhost:8888/tree

QT 笔记

HTTPS SSL配置 下载配置 子父对象 QTimer *timer new QTimer; // QTimer inherits QObject timer->inherits("QTimer"); // returns true timer->inherits("QObject"); // returns true timer->inherits("QAbst…

保形分位数回归(CQR)

目录 简介1 介绍提纲式总结 分位数回归从数据中估计分位数 3 共性预测4 保形分位数回归(CQR)两个定理 6 实验7 结论 简介 保形预测是一种构造在有限样本中获得有效覆盖的预测区间的技术&#xff0c;无需进行分布假设。尽管有这种吸引力&#xff0c;但现有的保形方法可能是不必…

【文心智能体】梗图七夕版,一分钟让你看懂如何优化prompt,以及解析低代码工作流编排实现过程和零代码结合插件实现过程,依然是干货满满,进来康康吧

目录 背景什么是梗图梗图概念梗图结构 低代码开发最小运行单元大模型链提示词模板文心模板输出效果 测试工具链HTTP请求工具 梗图工具链全流程 梗图优化Prompt提示词优化后梗图结构提示词前后对比优化前效果优化后效果API接口BOS图片水印 梗图插件格式说明构思插件清单文件定义…

HTML-07.表格标签

一、要制作的表格如下 二、代码如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>表格标签<…

数据结构——双链表详解(超详细)

前言&#xff1a; 小编在之前已经写过单链表的创建了&#xff0c;接下来要开始双链表的讲解了&#xff0c;双链表比单链表要复杂一些&#xff0c;不过确实要比单链表更好进行实现&#xff01;下面紧跟小编的步伐&#xff0c;开启今天的双链表之旅&#xff01; 目录 1.概念和结构…

【已解决】没有密码,如何解除PPT的“只读方式”?

PPT可以设置有密码的“只读方式”&#xff0c;保护文件不被随意编辑更改。 在设置保护后&#xff0c;打开PPT时就会弹出对话框&#xff0c;提示需要“输入密码以修改或以只读方式打开”&#xff0c;也就是输入密码才能编辑修改PPT&#xff0c;如果点击“只读”也能打开文件&am…

[BJDCTF2020]Mark loves cat1

打开题目 发现这么多链接&#xff0c;以为要一点点去找功能上的漏洞。当你源代码&#xff0c;dirsearch&#xff0c;抓包等等操作之后&#xff0c;发现什么都没有。所以这题又是一道源码泄露题&#xff0c;上GItHack。扫描结果如下 http://63f29a80-e08b-43ae-a6d0-8e70fb02ea…

闪耀STIF2023国际科创节,望繁信科技荣获年度行业创新典范奖

2023年12月15日&#xff0c;望繁信科技在STIF2023第四届国际科创节暨DSC2023国际数字服务大会&#xff08;数服会&#xff09;活动评选中&#xff0c;斩获“2023年度行业创新典范”大奖。 作为科技创新与数字化服务领域最具影响力的年度盛会之一&#xff0c;STIF2023国际科创节…

目标检测——YOLOv10: Real-Time End-to-End Object Detection

YOLOv10是在YOLOv8的基础上&#xff0c;借鉴了RT-DETR的一些创新点改进出来的 标题&#xff1a;YOLOv10: Real-Time End-to-End Object Detection论文&#xff1a;https://arxiv.org/pdf/2405.14458源码&#xff1a;https://github.com/THU-MIG/yolov10 1. 论文介绍 在过去的几…