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

万峰科技著.asp.net网站开发四酷全书电子工业出版社华为seo诊断及优化分析

万峰科技著.asp.net网站开发四酷全书电子工业出版社,华为seo诊断及优化分析,做免费互动小游戏的网站,中国排名前十的建筑公司文章目录 队列中可以看到的人数题目描述问题分析程序代码(Golang 版本) 队列中可以看到的人数 题目描述 原题链接 有 n 个人排成一个队列,从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights ,每个整数 互不相同&#xff…

文章目录

    • 队列中可以看到的人数
      • 题目描述
      • 问题分析
      • 程序代码(Golang 版本)

队列中可以看到的人数

题目描述

原题链接

n 个人排成一个队列,从左到右 编号为 0n - 1 。给你以一个整数数组 heights ,每个整数 互不相同heights[i] 表示第 i 个人的高度。

一个人能 看到 他右边另一个人的条件是这两人之间的所有人都比他们两人 。更正式的,第 i 个人能看到第 j 个人的条件是 i < jmin(heights[i], heights[j]) > max(heights[i+1], heights[i+2], ..., heights[j-1])

请你返回一个长度为 n 的数组 answer ,其中 answer[i] 是第 i 个人在他右侧队列中能 看到人数

问题分析

从左往右看,高的人会把矮的人挡住,只能看到右边呈现一个单调递增的序列,因此考虑使用单调栈求解该问题。

假设i < j,则i看到景象包含了j所看到的景象(若j挡住了后面所有的人,则信息蕴含在j本身)。因此,从子问题求解的角度分析,单调栈求解该问题应该从右往左进行遍历。

记遍历过程中,当前要研究的对象为i,其对应的高度为h。单调栈此时维持的是i右边所可能看到的对象(单调递增的序列)。统计单调栈中比i矮的人数(i能看到的人数)并弹出栈,因为在i前面的人看不到这些人,会被i挡住。

最后,判断此时栈是否为空,若不为空,要再加上i所能看到的最后一个人,即第一个比i要高的人。然后,将i压入栈中。

程序代码(Golang 版本)

func canSeePersonsCount(heights []int) []int {n := len(heights)res := make([]int, n)stk := make([]int, 0)for i := n - 1; i >= 0; i-- {h := heights[i]for len(stk) > 0 && stk[len(stk) - 1] <= h {stk = stk[:len(stk)-1]res[i]++}if len(stk) > 0 {res[i]++;}stk = append(stk, h)}return res
}
http://www.dt0577.cn/news/40723.html

相关文章:

  • 企业网站颜色南京网站排名提升
  • 个人网站 备案 攻略制作网站的最大公司
  • 苏州哪家做网站好些seo推广公司价格
  • wordpress 报名插件seo是什么?
  • 网页网站设计公司排行榜电商代运营收费标准
  • 专业长春网站建设网营销外包公司
  • 阜宁网站制作具体报价环球网
  • 高校校园网站建设的要求推广链接怎么自己搞定
  • 普通网站建设微信客户管理系统平台
  • qq素材网站源码网络外包运营公司
  • 建永久网站爱链网中可以进行链接买卖
  • 做儿童成长相册模版网站seo顾问阿亮
  • 网站的原型怎么做百度资源
  • 做视频网站需要什么空间吗互联网营销的十五种方式
  • 邹城手机网站建设seo站外推广
  • 云南网站建设维修公司哪家好seo排名软件哪个好用
  • 做尽调需要用到的网站在线seo优化
  • 中山哪里有做网站站长之家seo概况查询
  • 分类信息免费发布网网站seo报告
  • 做网站遇到各种问题工具刷网站排刷排名软件
  • 大型网站建设建设公司排名seo推广排名重要吗
  • 动漫视频网站开发百度游戏中心
  • com网站域名网络营销模式有哪几种
  • 网站脑图怎么做网站自动推广软件免费
  • 武汉光谷科技职业技术学校怎么样优化网站内容
  • 用iis浏览网站手机网站建设公司
  • 长春市最新疫情轨迹百度系优化
  • 平面设计师必看的网站百度推广关键词排名规则
  • nodejs 做视频网站如何查看百度指数
  • 读书郎营销网站友情链接交换平台免费