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

沈阳做网站好的公司网站设计方案

沈阳做网站好的,公司网站设计方案,shopify独立站搭建,信丰做网站LeetCode-day37-2940. 找到 Alice 和 Bob 可以相遇的建筑 题目描述示例示例1:示例2: 思路代码 题目描述 给你一个下标从 0 开始的正整数数组 heights ,其中 heights[i] 表示第 i 栋建筑的高度。 如果一个人在建筑 i ,且存在 i &…

LeetCode-day37-2940. 找到 Alice 和 Bob 可以相遇的建筑

  • 题目描述
  • 示例
    • 示例1:
    • 示例2:
  • 思路
  • 代码

题目描述

给你一个下标从 0 开始的正整数数组 heights ,其中 heights[i] 表示第 i 栋建筑的高度。

如果一个人在建筑 i ,且存在 i < j 的建筑 j 满足 heights[i] < heights[j] ,那么这个人可以移动到建筑 j 。

给你另外一个数组 queries ,其中 queries[i] = [ai, bi] 。第 i 个查询中,Alice 在建筑 ai ,Bob 在建筑 bi

请你能返回一个数组 ans ,其中 ans[i] 是第 i 个查询中,Alice 和 Bob 可以相遇的 最左边的建筑 。如果对于查询 i ,Alice 和 Bob 不能相遇,令 ans[i] 为 -1 。

示例

示例1:

输入:heights = [6,4,8,5,2,7], queries = [[0,1],[0,3],[2,4],[3,4],[2,2]]
输出:[2,5,-1,5,2]
解释:第一个查询中,Alice 和 Bob 可以移动到建筑 2 ,因为 heights[0] < heights[2] 且 heights[1] < heights[2] 。
第二个查询中,Alice 和 Bob 可以移动到建筑 5 ,因为 heights[0] < heights[5] 且 heights[3] < heights[5] 。
第三个查询中,Alice 无法与 Bob 相遇,因为 Alice 不能移动到任何其他建筑。
第四个查询中,Alice 和 Bob 可以移动到建筑 5 ,因为 heights[3] < heights[5] 且 heights[4] < heights[5] 。
第五个查询中,Alice 和 Bob 已经在同一栋建筑中。
对于 ans[i] != -1 ,ans[i] 是 Alice 和 Bob 可以相遇的建筑中最左边建筑的下标。
对于 ans[i] == -1 ,不存在 Alice 和 Bob 可以相遇的建筑。

示例2:

输入:heights = [5,3,8,2,6,1,4,6], queries = [[0,7],[3,5],[5,2],[3,0],[1,6]]
输出:[7,6,-1,4,6]
解释:第一个查询中,Alice 可以直接移动到 Bob 的建筑,因为 heights[0] < heights[7] 。
第二个查询中,Alice 和 Bob 可以移动到建筑 6 ,因为 heights[3] < heights[6] 且 heights[5] < heights[6] 。
第三个查询中,Alice 无法与 Bob 相遇,因为 Bob 不能移动到任何其他建筑。
第四个查询中,Alice 和 Bob 可以移动到建筑 4 ,因为 heights[3] < heights[4] 且 heights[0] < heights[4] 。
第五个查询中,Alice 可以直接移动到 Bob 的建筑,因为 heights[1] < heights[6] 。
对于 ans[i] != -1 ,ans[i] 是 Alice 和 Bob 可以相遇的建筑中最左边建筑的下标。
对于 ans[i] == -1 ,不存在 Alice 和 Bob 可以相遇的建筑。

思路

采用最小堆

算法涉及到三个位置,假定 a≤b,按照从左到右的顺序,它们分别是:

  1. a:回答询问时,用其高度 heights[a] 和当前高度 heights[i] 比大小,如果heights[a]<heights[i] 则找到答案。
  2. b:决定了在什么位置把询问加入堆中。注意在遍历到位置 b之前是不能入堆的。在遍历到位置 b 时入堆,这样后续只需要比较 heights[a]<heights[i],如果成立,就间接地说明heights[b]<heights[i] 也成立。并且,由于我们是从左往右遍历 heights 的,当前下标 i 就是 Alice 和Bob 可以相遇的最左边建筑的下标。
  3. 回答询问的位置 i。如果堆顶 heights[a] 小于当前位置的高度heights[i],则回答堆顶询问,并弹出堆顶。

代码

class Solution:def leftmostBuildingQueries(self, heights: List[int], queries: List[List[int]]) -> List[int]:ans = [-1] * len(queries)qs = [[] for _ in heights]for i,(a,b) in enumerate(queries):if a > b:a,b = b,aif a == b or heights[a]<heights[b]:ans[i] = belse:qs[b].append((heights[a],i))h = []for i,x in enumerate(heights):while h and h[0][0] < x:ans[heappop(h)[1]] = ifor q in qs[i]:heappush(h,q)return ans
http://www.mmbaike.com/news/24480.html

相关文章:

  • 医药网站设计什么是seo营销
  • 什么网站允许搭建手机自己怎么建电影网站
  • wordpress做过的大型网站吗惠州seo全网营销
  • 学做网站和推广要多久厦门seo培训学校
  • 我需要把网站做网站制作推广
  • 截图域名网站.发布新闻的平台有哪些
  • 物联网有前途吗知乎关键词排名优化
  • 做桑拿网站挣钱吗深圳关键词优化报价
  • 平面设计网课哪个机构好成都网站seo
  • seo网站内容互联网推广运营
  • 昆山网站建设兼职永久免费自助建站平台
  • 推广外贸网站网络营销策略主要包括
  • 无锡网站怎么做网络营销推广方式包括哪几种
  • 国外html5做的音乐网站网站如何建立
  • 赣州 做网站百度账户
  • 成全视频免费观看在线看第6季动漫版青岛seo公司
  • asp如何做网站目前小说网站排名
  • 大连发布: 大连发布seo营销
  • 二级域名网站可以做360推广网络营销的核心是用户吗
  • 给网站做推广一般花多少钱谷歌seo搜索优化
  • 站长之家ip查询工具爱站关键词
  • 门户网站制作流程成都seo外包
  • 百度推广网站必须备案吗站外推广免费网站
  • 建设银行成都开发中心网站sem数据分析
  • vue做网站对seo最佳bt磁力猫
  • 网站优化流程品牌策划案
  • 衡水做网站找谁武汉竞价托管公司
  • 多少钱可以立案诈骗seo是什么职业岗位
  • 没有基础怎么学网站建设搭建网站平台需要多少钱
  • soho的网站怎么做关键词搜索