当前位置: 首页 > news >正文

Leetcode-3488距离最小相等元素查询

依旧二分,链接如下3488. 距离最小相等元素查询

看题目是个循环数组,记得当时做过一道什么题也是循环数组,就想着直接数组复制一下,然后跟上一道题一样,用hashmap来存储value的值以及value对应下标的vector。

和灵神的思路类似,都是比较左右元素,不过我没有使用哨兵。

然后比较vector对应的idx到left元素的下标差以及到right元素的下标差,这里很容易出错。昨天debug了好久找不到问题在哪,后来发现是把nums数组的长度和下标所在的vector数组的长度搞混到一起了。最好还是用灵神的做法,我的这种做法太笨重了,容易出错。

C++代码如下

class Solution {
public:vector<int> solveQueries(vector<int>& nums, vector<int>& queries) {int m = nums.size();vector<int> numss = nums;numss.insert(numss.end(),nums.begin(),nums.end());unordered_map<int,vector<int>> hmap;for(int i = 0 ; i < numss.size();i++)hmap[numss[i]].push_back(i);vector<int> ans;for( int i = 0; i<queries.size();i++){auto it = hmap.find(numss[queries[i]]);if(it != hmap.end()&& it->second.size()!=2){auto& s = it->second;int n = s.size()/2;int r  = *upper_bound(s.begin(),s.end(),queries[i])-queries[i];int l ;auto l_ptr = lower_bound(s.begin(),s.end(),queries[i]);if(l_ptr == s.begin())l = abs(*--(l_ptr+n)-m-*l_ptr);elsel = abs(*(--l_ptr)-queries[i]);ans.push_back(min(r,l));}elseans.push_back(-1);}return ans;}
};

http://www.lryc.cn/news/611531.html

相关文章:

  • 系统的缓存(buff/cache)是如何影响系统性能的?
  • 第五十篇:AI画家的“神经中枢”:ComfyUI的推理路径与缓存逻辑深度解析
  • 【Web安全】csrf、ssrf和xxe的区别
  • Python实现电商商品数据可视化分析系统开发实践
  • Qt 中实现多线程的两种方式及结合
  • Pytest项目_day05(requests加入headers)
  • 8.6 JavaWeb(请求响应 P67-P74)
  • 部署Web UI自动化测试平台:SeleniumFlaskTester
  • UI测试平台TestComplete的AI视觉引擎技术解析
  • QT+opencv+yolov8推理
  • 移动端跨平台框架(支持Harmony、iOS、Android)
  • C语言:指针(1-2)
  • Kaggle 经典竞赛泰坦尼克号:超级无敌爆炸详细基础逐行讲解Pytorch实现代码,看完保证你也会!!!
  • 霍尔传感器
  • 碰撞问题的分析
  • 什么是CDN, 它为什么更快
  • 《算法导论》第 7 章 - 快速排序
  • 概率/期望 DP Jon and Orbs
  • 机器学习④【算法详解:从决策树到随机森林】
  • 一周学会Matplotlib3 Python 数据可视化-图形的组成部分
  • 场外期权的卖方是什么策略?
  • Python包管理新利器:uv全面解析与Conda对比指南
  • 从 LinkedIn 到 Apache:Kafka 的架构设计与应用场景
  • KafKa 项目 -- GitHub 学习
  • 【第6话:相机模型2】相机标定在自动驾驶中的作用、相机标定方法详解及代码说明
  • 在Word和WPS文字中如何输入汉字的偏旁部首
  • SELinux加固Linux安全2
  • docker安装FFmpeg
  • SmartMediaKit 模块化音视频框架实战指南:场景链路 + 能力矩阵全解析
  • Flink CDC如何保障数据的一致性?