枚举中间位置高级篇

参考资料来源灵神在力扣所发的题单,仅供分享学习笔记和记录,无商业用途。

核心思路:参考枚举中间位置基础篇-CSDN博客

力扣题单练习(灵神题单中摘取题目)

447. 回旋镖的数量

核心思路:

因给出的点都不相同,所以不会出现枚举到当前点的次数会>=2的情况,枚举每一个点对当前点的距离,从而得出有多少个点到当前点距离一致。

若有 m 个点到点 i 的距离都相同,那么能够组成的回旋镖数量就是 m * (m - 1)。这是因为从 m 个点里选 2 个点进行排列,排列数为 A(m, 2) = m * (m - 1)。

计算从m个点中选2个点进行排列动态(边统计数量)计算:ret+=map[buff]++*2;

class Solution {
public:int numberOfBoomerangs(vector<vector<int>>& points) {//核心思路:因给出的点都不相同,所以不会出现枚举到当前点的次数会>=2的情况,枚举每一个点对当前点的距离,从而得出有多少个点到当前点距离一致。//若有 m 个点到点 i 的距离都相同,那么能够组成的回旋镖数量就是 m * (m - 1)。这是因为从 m 个点里选 2 个点进行排列,排列数为 A(m, 2) = m * (m - 1)。int ret=0;unordered_map<int,int> map;for(auto& x:points){int buff=0;for(auto& y:points){buff=(x[0]-y[0])*(x[0]-y[0])+(x[1]-y[1])*(x[1]-y[1]);//采用的是动态计算的方式,在每次发现新点时,就把新增的组合数量累加到 ret 中。这样一来,当统计完所有点之后,ret 中存储的就是最终的结果。ret+=map[buff]++*2;}map.clear();}return ret;}
};

456. 132 模式

核心思路:

枚举中间位置 j,寻找左侧最小值与右侧次小值。采用自底向上单调递减栈维护右侧,保证满足栈顶大于左侧最小值的同时并且尝试满足小于当前元素

class Solution {
public:bool find132pattern(vector<int>& nums) {//核心思路:枚举中间位置 j,寻找左侧最小值与右侧次小值。采用自底向上单调递减栈维护右侧,保证满足栈顶大于左侧最小值的同时并且尝试满足小于当前元素int n=nums.size();if(n<3) return false;vector<int> left_min(n);left_min[0]=INT_MAX;//维护当前下标前面区间的最小值for(int i=1;i<n;i++) left_min[i]=min(left_min[i-1],nums[i-1]);stack<int> s; //存放可能满足条件的nums[k],维护自底向上递减栈,j实际上就是a[k]左侧第一个严格大于a[k]的元素下标for(int i=n-1;i>=1;i--){int current=nums[i];  //当前元素int buff=left_min[i]; //左侧区间最小值if(buff>=current) continue; //当前位置元素不合法while(!s.empty() && s.top()<=buff) s.pop(); //保证nums[k]>nums[i]if(!s.empty() && s.top()<current) return true; //栈顶元素为可能满足条件的最小元素,如果存在栈顶元素<nums[j]则存在132模式s.push(current);}return false;}
};

3067. 在带权树网络中统计可连接服务器对数目

题意:

给定一个双向路径带权节点数组,要求找到一个节点有至少2条不同的路径并且到路径上的节点的权重可以被signalSpeed整除,统计有多少对满足条件的服务器对组合。

核心思路:

根据给定数组构建路径图,枚举每一个节点,保证有至少两条不同路径。深搜找满足条件的数量,然后进行局部计算组合数量最终得到全部满足条件的组合数量

乘法原理:累加使用过的节点数*当前新统计节点,然后更新使用过的节点数

class Solution {
public://深搜:查找根元素到当前元素的权重可以被signalSpeed整除的节点数量int dfs(vector<vector<pair<int,int>>>& f, int x, int i, int sum, int signalSpeed){int cnt=sum%signalSpeed==0;for(auto &[y,w]:f[x]){if(y!=i) cnt+=dfs(f,y,x,sum+w,signalSpeed);}return cnt;}vector<int> countPairsOfConnectableServers(vector<vector<int>>& edges, int signalSpeed) {//题意:给定一个双向路径带权节点数组,要求找到一个节点有至少2条不同的路径并且到路径上的节点的权重可以被signalSpeed整除,统计有多少对满足条件的服务器对组合。//核心思路:根据给定数组构建路径图,枚举每一个节点,保证有至少两条不同路径。深搜找满足条件的数量,然后进行局部计算组合数量最终得到全部满足条件的组合数量int n=edges.size()+1;vector<vector<pair<int,int>>> f(n+1);//建立路径图for(auto &k:edges){int x=k[0],y=k[1],w=k[2];f[x].push_back({y,w});f[y].push_back({x,w});}vector<int> ret(n);for(int i=0;i<=n;i++){if(f[i].size()<=1) continue;int cnt=0;for(auto &[x,w]:f[i]){int buff=dfs(f,x,i,w,signalSpeed);ret[i]+=buff*cnt;  //用前面统计过局部答案的节点数*新满足条件的节点数获得当前局部答案。保证了最后能算出总组合数cnt+=buff; //前面统计过组合的节点数} }return ret;}
};

灵神枚举中间题单2000分以下题目以完成,后续会更新2000+题目的题解

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

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

相关文章

主数据管理系统能代替数据中台吗?

目录 一、主数据管理系统≠数据中台 1. 主数据管理系统&#xff1a;管的是 “不变的核心数据” 2. 数据中台&#xff1a;管的是 “流动中的价值” 二、为什么企业更该先建 MDM&#xff1f; 1. 数据中台解决不了数据本身问题 2. MDM 可以解决常见的基础问题 3. 数字化转型…

Nmap 终极教程:安装、常用命令及法律法规指南

Nmap 终极教程&#xff1a;安装、常用命令及法律法规指南 Nmap&#xff08;Network Mapper&#xff09;是一款强大的 网络扫描和安全审计工具&#xff0c;广泛用于渗透测试、网络探测和系统管理。本教程涵盖 安装方法、常用命令详解、输出解析 以及 法律法规注意事项&#xff…

开源嵌入式数组引擎TileDB的简单使用

TileDB 是C编写的存储和访问通用多维数组引擎&#xff0c;它的官方Github网站https://github.1git.de/TileDB-Inc/TileDB 1.下载源代码和二进制库 源代码https://github.1git.de/TileDB-Inc/TileDB/archive/refs/tags/2.28.1.tar.gz 选择符合你的机器CPU架构和操作系统的库 二进…

AI对服务器行业的冲击与启示:从挑战走向重构

更多云服务器知识&#xff0c;尽在hostol.comAI&#xff08;人工智能&#xff09;技术的迅猛发展&#xff0c;已深刻影响了多个行业&#xff0c;服务器行业亦不例外。在过去&#xff0c;服务器的主要任务是简单地提供存储、计算和传输数据的服务。然而&#xff0c;随着AI的崛起…

基于三台主机搭建 Web 服务环境:Nginx、NFS 与 DNS 配置全流程

基于三台主机搭建 Web 服务环境&#xff1a;Nginx、NFS 与 DNS 配置全流程 一、引言 在当今数字化的时代&#xff0c;搭建一个稳定、高效的 Web 服务环境是许多开发者和运维人员的常见需求。本文将详细介绍如何利用三台主机搭建一个包含 Nginx、NFS 和 DNS 服务的 Web 环境&…

MySQL——MVCC

1.为什么需要MVCC在并发场景下&#xff0c;读写操作会面临严重的冲突问题&#xff1a;1.读操作如果遇到写操作&#xff0c;要么“读到未提交的脏数据”&#xff0c;要么“被写操作阻塞&#xff08;等待锁释放&#xff09;”&#xff1b;2.写操作如果遇到读操作&#xff0c;要么…

数据结构第2问:什么是算法?

算法 算法是一组用于解决具体问题的、明确的、有序的步骤或规则&#xff0c;能够在有限的时间内通过这些步骤得到问题的答案。 算法的5个重要特性&#xff1a; 有穷性&#xff1a;算法必须在有限的步骤内结束&#xff0c;不能无限循环&#xff0c;保证最终能够得到结果。确定性…

12-大语言模型—Transformer 打地基,下游任务盖出百样房,指标来验收|下游任务白话指南

目录 1、核心逻辑&#xff1a;Transformer 的 “语言处理闭环” 2、转导与感知 → 模型咋 “理解语言”&#xff1f; 2.1、 人类 vs 机器的 “语言理解逻辑” 2.2、 自注意力机制&#xff1a;模型 “理解语言” 的数学核心 2.2.1、通俗拆解 2.2.1.1、是什么&#xff1f; …

深入探索爬虫与自动化脚本:释放效率的利器

在当今信息爆炸的时代&#xff0c;高效获取和处理数据已成为核心竞争力。爬虫与自动化脚本正是解决这一痛点的关键技术——它们如同数字世界的勤劳助手&#xff0c;帮我们自动完成繁琐重复的任务。下面我们来系统了解这两项技术的核心要点、应用场景和最佳实践。一、爬虫与自动…

React函数组件的“生活管家“——useEffect Hook详解

&#x1f3af; React函数组件的"生活管家"——useEffect Hook详解 1. &#x1f31f; 开篇&#xff1a;从生活中的"副作用"说起 嘿&#xff0c;各位掘友们&#xff01;今天咱们来聊聊React函数组件里的一个“大管家”——useEffect Hook。你可能会问&#x…

python基础:request请求Cookie保持登录状态、重定向与历史请求、SSL证书校验、超时和重试失败、自动生成request请求代码和案例实践

Cookie保持登录状态cookie session鉴权机制 cookie是由web服务器保存在用户浏览器&#xff08;客户端&#xff09;上的小文本文件&#xff0c;他可以包含有关用户的信息。无论何时用户访问到服务器&#xff0c;都会带上该服务器的cookie信息&#xff0c;一般cookie都是有有效期…

Vulkan入门教程 | 第二部分:创建实例

前言&#xff1a;本教程为笔者依据教程https://docs.vulkan.net.cn/spec/latest/index.html#_about进行Vulkan学习并结合自己的理解整理的笔记&#xff0c;供大家学习和参考。 &#xff08;注意&#xff1a;代码仅为片段&#xff0c;非完整程序&#xff09; 学习前提&#xff1…

PHP云原生架构:容器化、Kubernetes与Serverless实践

引言 随着云计算的普及,PHP应用也在向云原生架构演进。本文将深入探讨PHP在云原生环境中的最佳实践,包括容器化部署、Kubernetes编排、Serverless架构以及云原生监控与日志方案,帮助开发者构建现代化、可扩展的PHP应用。 容器化PHP应用 基础Dockerfile优化 # 多阶段构建…

【华为机试】5. 最长回文子串

文章目录5. 最长回文子串描述示例 1示例 2示例 3示例 4提示解题思路方法一&#xff1a;中心扩展法&#xff08;推荐&#xff09;方法二&#xff1a;动态规划方法三&#xff1a;Manacher算法方法四&#xff1a;暴力解法代码实现复杂度分析测试用例完整题解代码5. 最长回文子串 …

【图像处理基石】如何对遥感图像进行实例分割?

遥感图像实例分割是指在遥感影像中&#xff0c;不仅要识别出不同类别的目标&#xff08;如建筑物、车辆、道路等&#xff09;&#xff0c;还要区分同一类别中的不同个体&#xff08;如建筑物1、建筑物2&#xff09;&#xff0c;并为每个实例生成精确的像素级掩码。 一、遥感图…

电子电气架构 --- 软件bug的管理模式

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…

【每日一错】Oracle 19c CDB中如何启动一个PDB

文章目录题目扩展学习CDB与PDB的概念CDB&#xff0c;PDB结构优势总结题目 扩展学习 CDB与PDB的概念 在Oracle 12c及以上版本&#xff0c;Oracle引入了多租户架构&#xff0c;这种架构让数据库的管理和资源使用更加高效。它由两种主要组成部分组成&#xff1a; CDB&#xff0…

Android studio自带的Android模拟器都是x86架构的吗,需要把arm架构的app翻译成x86指令?

Android studio自带的Android模拟器都是x86架构的吗&#xff0c;需要把arm架构的app翻译成x86指令&#xff1f; deepseek回答&#xff1a; Android Studio 自带的官方模拟器&#xff08;Android Emulator&#xff09;主要提供基于 x86 架构的系统镜像。当运行 ARM 架构的应用…

Deep Learning_ Foundations and Concepts-Springer (2024)【拜读】20章3节

Diffusion Models 扩散模型 我们已经了解到&#xff0c;构建强大的生成模型的一种有效方法是&#xff1a;先引入一个关于潜在变量z的分布p(z)&#xff0c;然后使用深度神经网络将z变换到数据空间x。由于神经网络具有通用性&#xff0c;能够将简单固定的分布转化为关于x的高度灵…

Arduino与STM32:初学者该如何选择?

在电子爱好者和初学者的世界里&#xff0c;Arduino和STM32是两个经常被提及的名字。它们各自具有独特的优势和特点&#xff0c;适合不同类型的项目和需求。对于初学者来说&#xff0c;选择Arduino还是STM32&#xff0c;往往取决于个人的学习目标、项目需求以及预算。本文将详细…