【leetcode详解】正方形中的最多点数【中等】(C++思路精析)

news2024/9/25 23:22:01

思路精析:

自定义结构体解读:

一个点是否在题给正方形中,只取决于其横纵坐标的最大值,记为dis

沟通二位数组points和字符串s的桥梁,就是这个点的序号,记为idx

由此自定义结构体,储存dis 和idx

//其中bool operator部分的功能:重载小于操作符“<”, 使sort(vc.begin(), vc.end());按dis值升序排列

struct Node{
	int dis; int idx;
	bool operator<(const Node& other)const
	{
		return dis < other.dis;
	}
};
vector<Node>vc;

集合set的使用解释:

//笔者感觉,对于需要检验重复的问题,这是一种很经典的操作

set<int>st;
if(st.count(s[vc[i].idx]))
{
	if(cur_dis != vc[i].dis) re+=cur;
	return re;
} 
else st.insert(s[vc[i].idx]);

初始化:

int maxPointsInsideSquare(vector<vector<int>>& points, string s) {
    int x, y, sz = points.size();
    Node t_node;
	for(int i=0; i<sz; i++)
    {
    	int dis = max(abs(points[i][0]), abs(points[i][1]));
		t_node.dis = dis;
		t_node.idx = i;
		vc.push_back(t_node);
	}
	sort(vc.begin(), vc.end());
}

补充说明

用re记录总点数,用cur记录当前dis记录的点的个数

只有在dis相同的点全部符合要求时,才将其加到re上

re += cur

int re = 0, cur = 0, cur_dis=-1;
for(int i=0; i<sz; i++)
{
	if(st.count(s[vc[i].idx]))
	{
		if(cur_dis != vc[i].dis) re+=cur;
		return re;
	} 
	else st.insert(s[vc[i].idx]);
	
	if(cur_dis != vc[i].dis){
		re += cur;
		cur = 1;
		cur_dis = vc[i].dis;
	}
	else cur++;
}
return re+cur;

//在上述思路基础上,通过不断调试,见到了更多测试数据,由此进一步完善细节

AC代码见下:

class Solution {
private:
	struct Node{
		int dis; int idx;
		bool operator<(const Node& other)const
		{
			return dis < other.dis;
		}
	};
	vector<Node>vc;
	set<char>st;
public:
    int maxPointsInsideSquare(vector<vector<int>>& points, string s) {
        int x, y, sz = points.size();
        Node t_node;
		for(int i=0; i<sz; i++)
        {
        	int dis = max(abs(points[i][0]), abs(points[i][1]));
			t_node.dis = dis;
			t_node.idx = i;
			vc.push_back(t_node);
		}
		sort(vc.begin(), vc.end());
		int re = 0, cur = 0, cur_dis=-1;
		for(int i=0; i<sz; i++)
		{
			if(st.count(s[vc[i].idx]))
			{
				if(cur_dis != vc[i].dis) re+=cur;
				return re;
			} 
			else st.insert(s[vc[i].idx]);
			
			if(cur_dis != vc[i].dis){
				re += cur;
				cur = 1;
				cur_dis = vc[i].dis;
			}
			else cur++;
		}
		return re+cur;
    }
};

~ 希望对你有启发 ~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA中List不能创建实例。结合ArrayList的理解。

今天在使用List的时候&#xff0c;我以为List是一个父类&#xff0c;ArrayList继承自List&#xff0c;所以我想着干脆直接就创建一个List实例。结果发现程序报错了。 后来我查看了List源码&#xff0c;和ArrayList源码&#xff0c;我发现。List是一个接口&#xff0c;而ArrayL…

mac中dyld[99014]: Library not loaded: @rpath/libmysqlclient.24.dylib解决方法

将需要的库做个软链即可 sudo ln -s -f /usr/local/mysql-9.0.1-macos14-arm64/lib/libmysqlclient.24.dylib /usr/local/mysql/lib/libmysqlclient.24.dylib 再执行就不会报这个错误了&#xff0c;报的下一个需要的库

去噪扩散恢复模型

去噪扩散恢复模型 Bahjat Kawar 计算机科学系 以色列海法理工学院 bahjat.kawarcs.technion.ac.il Michael Elad 计算机科学系 以色列海法理工学院 eladcs.technion.ac.il Stefano Ermon 计算机科学系 美国加利福尼亚州斯坦福大学 ermoncs.stanford.edu …

ROS2 Linux Mint 22 安装教程

前言&#xff1a; 本教程在Linux系统上使用。 一、linux安装 移动硬盘安装linux&#xff1a;[LinuxToGo教程]把ubuntu装进移动固态&#xff0c;随时随用以下是我建议安装linux mint版本的清单&#xff1a; 图吧工具箱&#xff1a;https://www.tbtool.cn/linux mint: https://…

YAML基础语言深度解析

引言 YAML&#xff08;YAML Aint Markup Language&#xff0c;即YAML不是一种标记语言&#xff09;是一种直观、易于阅读的数据序列化格式&#xff0c;常用于配置文件、数据交换和程序间的通信。其设计目标是易于人类阅读和编写&#xff0c;同时也便于机器解析和生成。在本文中…

英伟达A100 GPU的核心数,Tesla系列

目录 GeForce RTX 什么意思 英伟达A100 GPU的核心数 A100概述 NVIDIA GPU GeForce系列(消费级) Quadro系列(专业级) Tesla系列(数据中心和AI) AMD GPU Radeon系列(消费级) 注意 GeForce RTX 什么意思 GeForce RTX是英伟达(NVIDIA)公司旗下的一个高端显卡系…

VS2019 新建项目里没有CUDA选项

问题 在Visual Studio 2019安装之前&#xff0c;先安装了CUDA Toolkit。在使用Visual Studio 2019创建新项目的时候&#xff0c;发现新建项目里没有CUDA的选项。 这时候有两种办法&#xff0c;一种是把CUDA Toolkit卸载重装&#xff0c;重装的时候&#xff0c;CUDA会自己在Visu…

LLM之本地部署GraphRAG(GLM-4+Xinference的embedding模型)(附带ollma部署方式)

前言 有空再写 微软开源的GraphRAG默认是使用openai的接口的&#xff08;GPT的接口那是要money的&#xff09;&#xff0c;于是就研究了如何使用开源模型本地部署。 源码地址&#xff1a;https://github.com/microsoft/graphrag 操作文档&#xff1a;https://microsoft.git…

springboot+vue+mybatis音乐网站的设计+PPT+论文+讲解+售后

听音乐看似是一件休闲娱乐的事情,但是如果你选择合适的音乐,多听一些有益的音乐,会有很多不一样的效果。音乐可以让身体放轻松,好的音乐可以纾解压力, 首先我们想到的是。可以舒缓心情。这一点是没错的&#xff0c;在一个人心情不好的时候&#xff0c;或者压抑的时候&#xff…

HDU1097——A hard puzzle,HDU1098——Ignatius‘s puzzle,HDU1099——Lottery

目录 HDU1097——A hard puzzle 题目描述 运行代码 代码思路 HDU1098——Ignatiuss puzzle 题目描述 ​编辑​编辑运行代码 代码思路 HDU1099——Lottery 题目描述 运行代码 代码思路 HDU1097——A hard puzzle 题目描述 Problem - 1097 运行代码 #include <…

openhasp入门--介绍

**OpenHASP** 是一个开源的智能家居控制器&#xff0c;使用ESP32&#xff0c;采用配置方式生成图形界面&#xff0c;免去写代码 1. 高度可定制性&#xff1a;用户可以根据自己的需求和偏好&#xff0c;灵活配置和定制各种自动化规则和场景。例如&#xff0c;您可以设置在特定时…

大模型基础之位置编码RoPE

文章目录 RoPE准备知识RoPE的推导RoPE的代码实现参考资料 RoPE RoPE(Rotary Position Embedding&#xff0c;旋转式位置编码)是一种配合Attention机制能达到“通过绝对位置编码的方式实现相对位置编码”的设计。在2021年2月由苏剑林提出&#xff0c;是现在的大模型最常用的位置…

二叉树的中序遍历 - 力扣(LeetCode)C语言

94. 二叉树的中序遍历 - 力扣&#xff08;LeetCode&#xff09;&#xff08;点击前面链接即可查看题目&#xff09; 一、题目 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,…

【数据结构与算法】堆实现优先级队列

堆实现优先级队列 一.堆实现优先级队列的原理二.优先级队列结构体三.堆初始化四.入队五.出队六.销毁队列七.总结 一.堆实现优先级队列的原理 堆就是可以将最大值或者最小值,每次取出,那么刚好可以进行排序,而我们的优先级队列,就是对于优先级最高的先进行出队,也就相当于是排序…

空气净化器对去除宠物毛有效吗?小型猫毛空气净化器使用感受

作为一个养猫多年的猫奴&#xff0c;家里有两只可爱的小猫咪&#xff1a;小白和小花。虽然相处起来很开心&#xff0c;但也给生活带来了一些小麻烦。谁懂啊&#xff0c;我真的受够了&#xff0c;每天都在粘毛。猫窝的猫毛一周不清理就要堆成山&#xff0c;空气中也全是浮毛&…

JAVA线程中的安全性问题详解

多线程很难掌握&#xff0c;稍不注意&#xff0c;就容易使程序崩溃。我们以在路上开车为例&#xff1a; 在一个单向行驶的道路上&#xff0c;每辆汽车都遵守交通规则&#xff0c;这时候整体通行是正常的。『单向车道』意味着『一个线程』&#xff0c;『多辆车』意味着『多个 jo…

嵌入式学习---DAY18:shell脚本

shell脚本文件进程网络HtmlDb shell脚本是一系列shell命令的集合。 shell 命令解释器 shell编程&#xff1a;解释型语言、边翻译边执行、擅长文件处理,操作系统管理、开发效率高 cp 1 2、执、效率低、移植性好 C语言&#xff1a;编译型语言、先编译再执行、擅长数据计算…

【Linux】一篇总结!什么是重定向?输出重定向的作用是什么?什么又是追加重定向?

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;一篇总结&#xff01;什么是重定向&#xff1f;输出重定向的作用是什么&#xff1f;什么又是追加重定向&#xff1f; &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Py…

绘制图层的图形全部都在geojson图层之下会被覆盖,同步graphic类型使用说明

### 绘制图层js const graphicLayer new mars3d.layer.GraphicLayer({zIndex: 1000000000000000000000000,hasEdit: false,isAutoEditing: false, // 绘制完成后是否自动激活编辑// addHeight: 1,allowDrillPick: false, }) 绘制方法js graphicLayer.startDraw({type: type,st…

一款免费的Windows 11/10系统常见问题修复工具

FixWin是一款功能强大的Windows系统修复工具&#xff0c;免费便携&#xff0c;无需安装即可使用。FixWin旨在帮助用户解决各种常见的Windows问题。它提供了多种修复选项和故障排除功能&#xff0c;适用于 Windows 11/10。 FixWin 主要功能&#xff1a; 系统文件检查器&#x…