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

网站怎样制作吸引人可以查各种资料的app

网站怎样制作吸引人,可以查各种资料的app,外贸信托,中铁建设集团招聘700人目录 1851. 包含每个查询的最小区间 题目描述#xff1a; 实现代码与解析#xff1a; 排序 哈希 原理思路#xff1a; 1851. 包含每个查询的最小区间 题目描述#xff1a; 给你一个二维整数数组 intervals #xff0c;其中 intervals[i] [lefti, righti] 表示第 i…目录 1851. 包含每个查询的最小区间 题目描述 实现代码与解析 排序 哈希 原理思路 1851. 包含每个查询的最小区间 题目描述 给你一个二维整数数组 intervals 其中 intervals[i] [lefti, righti] 表示第 i 个区间开始于 lefti 、结束于 righti包含两侧取值闭区间。区间的 长度 定义为区间中包含的整数数目更正式地表达是 righti - lefti 1 。 再给你一个整数数组 queries 。第 j 个查询的答案是满足 lefti queries[j] righti 的 长度最小区间 i 的长度 。如果不存在这样的区间那么答案是 -1 。 以数组形式返回对应查询的所有答案。 示例 1 输入intervals [[1,4],[2,4],[3,6],[4,4]], queries [2,3,4,5] 输出[3,3,1,4] 解释查询处理如下 - Query 2 区间 [2,4] 是包含 2 的最小区间答案为 4 - 2 1 3 。 - Query 3 区间 [2,4] 是包含 3 的最小区间答案为 4 - 2 1 3 。 - Query 4 区间 [4,4] 是包含 4 的最小区间答案为 4 - 4 1 1 。 - Query 5 区间 [3,6] 是包含 5 的最小区间答案为 6 - 3 1 4 。示例 2 输入intervals [[2,3],[2,5],[1,8],[20,25]], queries [2,19,5,22] 输出[2,-1,4,6] 解释查询处理如下 - Query 2 区间 [2,3] 是包含 2 的最小区间答案为 3 - 2 1 2 。 - Query 19不存在包含 19 的区间答案为 -1 。 - Query 5 区间 [2,5] 是包含 5 的最小区间答案为 5 - 2 1 4 。 - Query 22区间 [20,25] 是包含 22 的最小区间答案为 25 - 20 1 6 。提示 1 intervals.length 1051 queries.length 105intervals[i].length 21 lefti righti 1071 queries[j] 107 实现代码与解析 排序 哈希 class Solution { public:vectorint minInterval(vectorvectorint itv, vectorint qr) {vectorint res(qr.size(), -1);setpairint, int st;for (int i 0; i qr.size(); i) st.insert({qr[i], i}); // 所求数字编号// 区间从小到大排 lambda表达式sort(itv.begin(), itv.end(), [](const auto a, const auto b){return a[1] - a[0] b[1] - b[0];});for (int i 0; i itv.size(); i){auto it st.lower_bound({itv[i][0], - 1}); //第一个大于等于左边界//找出左边界和右边界之间包含的查询for (it; it ! st.end() (it-first itv[i][1] || it-first itv[i][1]);){res[it-second] itv[i][1] - itv[i][0] 1; //查询编号得到结果st.erase(it);// 删除已经得到结果的que.防止下次覆盖改变结果}}return res;} }; 原理思路 首先按照区间大小对itv进行排序然后利用setpairint ,int对qr进行排序同时记录其编号并且创建一个res数组存放结果初始化为 -1 。 遍历itv在set中找出第一个大于等于itv[i][0]的位置左端点然后开始遍历set中储存的询问找出小于等于 itv[i][0](右端点的询问根据记录的编号位置给对应位置的res赋值位区间长度同时删除set.erase已经得到结果的询问最终得到所有结果。 注意一定不要把遍历set时的it放入for()中而是放入erase中。 lower_bound(x) 是用来寻找第一个大于等于x的位置。 upper_bound(x) 是用来寻找第一个大于x的位置。 不得不说在写仿函数的时候 lambda 写起来确实方便很多学到了。 一开始我写的丑陋代码大家可以不用看我自己记录一下就过了4分之3把qr排序来优化一下应该也可以过。 class Solution { public:class mycomparison {public:bool operator()(const pairint, int a, const pairint, int b) {return a.first b.first;}};vectorint minInterval(vectorvectorint intervals, vectorint queries) {vectorint qr(10000010, -1); // 用于预处理vectorint res; // 放结果priority_queuepairint ,int, vectorpairint, int, mycomparison que; // pair区间长度编号小堆区间长度排序for (int i 0; i intervals.size(); i){que.push({intervals[i][1] - intervals[i][0] 1, i}); // pair长度编号}while(que.size()){auto t que.top();int len t.first; // 区间长度int idx t.second; // 此区间编号int r intervals[idx][1]; // 右端点int l intervals[idx][0]; // 左端点for (int i l; i r; i){if (qr[i] -1){qr[i] len;}}que.pop();}for (int i 0; i queries.size(); i){res.push_back(qr[queries[i]]);}return res;} };
http://www.pierceye.com/news/951190/

相关文章:

  • 个人网站排名欣赏哪个网站可以做笔译兼职
  • 创建一个网站主页wordpress英文博客主题
  • 天津建站模板搭建电子商务网页设计与网站建设论文
  • 网站空间可以自己做服务器网站环境搭建教程
  • 建一个网站素材哪里来长安城乡建设开发有限公司网站
  • 网站内容由什么组成部分组成微信静首页制作代码
  • 精品课程网站开发平台福建省建设厅网站 保证金
  • 网站后台 不能删除文章贵州建设厅网站首页
  • 重庆市园林建设有限公司网站酒店平台网站建设
  • c 网站开发实例教程超级外链工具 增加外链中
  • ip怎么做网站外贸网站建设哪里好
  • 市网站建设网站排名查询alexa
  • 西安建设网站首页网络互联网推广
  • 百度搜索网站显示图片wordpress 工作室
  • 网站页面模板 建设中集团做网站优势
  • 提供佛山网站制作大连市建设工程集团有限公司
  • 北京网站设计外包公司价格网站怎么备案在哪里
  • 视频网站广告代码网站建设怎么插图片
  • 网站建设需要敲代码吗外贸网站商城
  • wordpress增加网站网页关键词企业网站的需求是什么
  • 口碑好网站建设电话什么是搜索引擎优化用一句话概括
  • wordpress的vps建站流程ui是什么意思
  • 广州专业的网站建设公司哪家好wordpress博客优秀
  • 没有服务器建网站免费开发软件制作平台
  • 高端品牌网站建设明细报价报青岛市公共资源交易网
  • 余姚 网站建设济南网站开发薪酬
  • 一流高职院校建设工作网站野花香社区在线观看播放
  • 大连建设科技网站绿色主题 wordpress
  • 外网访问不了内网建设的网站做网站电销
  • 桂平市住房和城乡建设局网站杭州app定制公司