【Python算法】:逛街

牛客网华为软件测试题库,牛客网华为机试题答案 大家好,本文将围绕牛客网华为软件测试题库展开说明,牛客网华为机试题答案是一个很多人都想弄明白的事情,想搞清楚华为牛客网的笔试难吗需要先了解以下几个事情。 阅读详情

小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。
小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住)

输入描述:
输入第一行将包含一个数字n,代表楼的栋数,接下来的一行将包含n个数字wi(1<=i<=n),代表每一栋楼的高度。
1<=n<=100000;
1<=wi<=100000;

输出描述:
输出一行,包含空格分割的n个数字vi,分别代表小Q在第i栋楼时能看到的楼的数量。

输入例子1:
6
5 3 8 3 2 5

输出例子1:
3 3 5 4 4 4

例子说明1:
当小Q处于位置3时,他可以向前看到位置2,1处的楼,向后看到位置4,6处的楼,加上第3栋楼,共可看到5栋楼。当小Q处于位置4时,他可以向前看到位置3处的楼,向后看到位置5,6处的楼,加上第4栋楼,共可看到4栋楼。

方法1:入栈出栈,只用循环两次,每次检查一个方向上可以看到的楼房个数(最快)

n = input()#6
building = list(map(lambda x:int(x), input().split()))#5 3 8 3 2 5

def count_visible(build_list):
    builds = []; build_num = []
    for i in range(int(n)-1):
        if i==0:
            builds.append(build_list[i])
        elif build_list[i] < builds[-1]:#如果下一建筑,比可看到建筑的最后一个矮,肯定不会挡住后面,所以直接加进来
            builds.append(build_list[i])
        else:#如果比最后一个高,挡住了可看到的最后一个,那么就要删掉,一直删到挡不住后面
            while len(builds)>0 and builds[-1] <= build_list[i]:
                del builds[-1]
            builds.append(build_list[i])#别往了把该建筑加进来,每一次循环到保存目前可以看到的
        build_num.append(len(builds))#计数
    return [0]+build_num
    
left = count_visible(building)#向左看
right = count_visible(building[::-1])[::-1]#向右看
print(' '.join([str(left[i] + right[i] + 1) for i in range(int(n))]))

方法2:逐个楼左右看,每次查找最高楼,删掉最高楼以后的楼(略慢)

n = input()#6
building = list(map(lambda x:int(x), input().split()))#5 3 8 3 2 5

def count_visible(build_list, count = 0):
    while len(build_list)>0:
        max_loca = build_list.index(max(build_list))
        if len(build_list[:max_loca])>0:
            count += 1
            build_list = build_list[:max_loca]
        else:
            count += 1
            break
    return count
count = []
for i in range(int(n)):
    left_count = count_visible(building[:i][::-1])
    right_count = count_visible(building[i+1:])
    count.append(str(left_count + right_count + 1))
print(' '.join(count))

方法3:逐个楼左右看,逐一排查(超级慢)

n = input()#6
building = list(map(lambda x:int(x), input().split()))#5 3 8 3 2 5

def count_visible(build_list, count = 0):
    for i in range (1,len(build_list)):
        if max(build_list[:-i])>=build_list[-i]:#如果遮住了
            continue
        else:#没遮住,就计数
            count += 1
    if len(build_list)!=0:
        count += 1
    return count
count = []
for i in range(int(n)):
    left_count = count_visible(building[:i][::-1])
    right_count = count_visible(building[i+1:])
    count.append(str(left_count + right_count + 1))
print(' '.join(count))

10000个数据:

1、方法1用时:0.022s
2、方法2用时:3.312s
3、方法3用时:33s

python刷题记录:逛街(腾讯2020后台招聘) python刷题记录:逛街(腾讯2020后台招聘) 废话前言 最近找实习遭受了打击,得开始准备刷题了,不算很早了,顺便写个帖子作为记录来激励自己。作为菜鸡,非常欢迎大家交流,但请轻点喷。 题目描述 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。 小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住) 举例 输入: [5,3,8,3,2,5] 输出: 阅读详情

相关推荐

数据结构与算法 —— 最短路径Dijkstra算法(迪杰斯特拉)详细图解以及python实现

前两章我们讲到了关于图的基本知识,和广度/深度优先搜索。本章,我们将介绍加权图和最短路径的相关知识。最短路径和最小生成树是图论中常见的问题。最短路径是指在一个图中找到两个节点之间的最短路径,最小生成树是指在一个图中找到一个连通子图,使得所有节点都能够互相到达,且总权值最小。最短路径算法常见的有floyd算法(弗洛伊德算法)和 dijkstra算法(迪杰斯特拉)。本文只介绍dijkstra算法。最短路径运用非常广泛,比如在导航系统中,确定两个地点间哪条路线最短;

‘’ 2万+

腾讯2020校招笔试题 逛街 JAVA题解

逛街 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。 小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住) 输入描述: 输入第一行将包含一个数字n,代表楼的栋数,接下来的一行将包含n个数字wi(1<=i<=n),代表每一...

weixin_41988889的博客 1212

【公司真题--腾讯】腾讯2020校园招聘-后台

【公司真题--腾讯】腾讯2020校园招聘-后台。

AloneYue优快云 706

小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行...----腾讯校园招聘

问题描述 思路 代码

qq_41789960的博客 2611

中职网络安全2021年国赛Wireshark流量分析题目解析

中职网络安全Wireshark流量分析题目解析

FRANXX_02的博客 6444

CANoe开发入门到精通读书笔记(2)——CAPL编程

CAPL函数的语法跟C语言很类似,但也包含一些C语言所不具备的功能大部分CAPL支持的数据类型都可以直接声明为函数参数, 例如,整型、浮点型、枚举、结构、定时器以及它们的引用。但有一些类型不能被直接声明,而需要加上*号(注意该符号并不是C语言中 指针的意思)。例 如 : signal * s 、 envvarInt * ev 、 sysvarFloat * sv 、 diagRequest * dr、diagResponse * dr、int matrix[][],以及。

weixin_66275497的博客 6462

腾讯后台笔试题逛街

逛街 链接:https://www.nowcoder.com/questionTerminal/35fac8d69f314e958a150c141894ef6a 来源:牛客网 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。 小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于...

VICTORY963的博客 620

Cursor+Playwright MCP实战:如何用自然语言一键生成UI自动化测试脚本

本文探讨了如何利用Cursor与Playwright MCP实现自然语言驱动的UI自动化测试脚本生成。通过智能IDE与浏览器自动化协议的结合,开发者可以高效创建稳定的测试脚本,显著提升测试效率与维护性。重点介绍了MCP架构的优势、项目结构最佳实践及团队协作规范,为自动化测试带来革命性改进。

k8l9m0n的博客 442

[编程题]逛街

时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M 小Q在周末的时候和他的小伙伴来到大城市逛街,一条步行街上有很多高楼,共有n座高楼排成一行。 小Q从第一栋一直走到了最后一栋,小Q从来都没有见到这么多的楼,所以他想知道他在每栋楼的位置处能看到多少栋楼呢?(当前面的楼的高度大于等于后面的楼时,后面的楼将被挡住) 输入描述: 输入第一行将包含一个数字n,代表楼的栋数,接下来的一行将包含n个数字wi(1<=i<=n),代表每一栋楼的高...

jinduo16的博客 269

如何给K8S配置一个具有永久有效的kubeconfig

在 Amazon EKS 环境中,Kubernetes 的认证机制与 AWS IAM 深度集成,通过aws-iam-authenticator动态生成临时凭证。这种设计虽然增强了安全性,但给需要持久化凭证的工具链(如 CI/CD 系统中的 KubeVela)带来了挑战。具体表现为:临时凭证失效​​:默认 Token 有效期为 15 分钟至 1 小时;​​IAM 角色限制​​:直接使用aws eks get-token生成的凭证无法持久化

小杨同学的博客 661

数据资产入表——解读100页数据资产入表解读与分析【附全文阅读】

本文档《数据资产入表:解读与分析》面向企业财务、数据管理、法务合规及高管等核心岗位,系统解析数据资产入表全流程。以"政策-实操-价值"为主线,首先解读入表政策要求,明确会计处理规范;其次详细拆解数据盘点、治理、确权、评估等实操步骤,提供行业案例参考;最后分析入表难点及后续运营策略,为企业提供从政策理解到落地执行的一站式解决方案。

cdfunlove的博客 392

HMM算法

文章目录一、马尔科夫简述二、HMM算法概述三、隐马尔科夫模型(HMM)笔记(公式+代码)3.1基本概念3.1.13.1.2盒子和球模型3.1.3观测序列生成过程3.1.4HMM模型3个基本问题3.2概率计算问题3.2.1直接计算法3.2.2前向算法3.2.2.1前向公式证明3.2.2.2盒子和球例子3.2.2.3前向算法Python代码3.2.3后向算法3.2.3.1后向公式证明3.2.3.2后向算法Python代码3.2.4一些概率与期望值3.3学习算法3.3.1监督学习方法3.3.2无监督Baum-We

weixin_50624597的博客 1643

浏览器缓存导致代码不更新?一招解决部署后用户仍看到旧页面的问题

方案效果适用场景文件名哈希永久解决前端工程化项目HTTP缓存头控制精准控制需服务器权限Meta标签部分生效临时补救方案最佳实践:入口HTML禁用缓存,静态资源使用哈希文件名 + 长期缓存,达到「秒级更新」+「高性能」的平衡!

江拥羡橙的博客 810

Dijkstra算法详解

最近在计算机网络这门课中学到了Dijkstra算法,因此做了以下详细整理以便初学者都能理解。

景风眠的博客 1164

beegfs源码分析

BeeGFS的客户端是由一个内核模块和两个系统服务组成的,这里咱们主要分析内核模块。由于BeeGFS的目录树解析,是在父目录DEntry里找子目录或文件DEntry,逐级迭代完成的,所以在Mount文件系统时,须要从管理节点获取根元数据节点的ID,而后再向根元数据节点查询根目录的DEntry的信息,为后续的目录解析打下基础。获取类似/data/beeond/data/dentries/38/51/root/#fSiDs#/文件fileId的父路径。1.1 FileID的生成。Session网络消息。

wfzy的博客 1913

【Python机器学习】决策树与随机森林:解释性与鲁棒性的平衡

本文深入探讨了决策树和随机森林在解释性与鲁棒性之间的权衡。决策树以其完美的可解释性、快速的推理速度和无需特征标准化等优势,在许多场景中仍然是首选算法。一个经过合理剪枝的决策树,其每个决策路径都可以转化为业务规则,这在金融风控、医疗诊断等对透明度有严格要求的领域无可替代。然而,单棵决策树的高方差和容易过拟合的特性限制了其泛化能力。随机森林通过集成学习的思想,巧妙地解决了这个矛盾。它维持了相对较好的解释性(通过特征重要性、OOB估计等方式),同时通过多棵树的投票或平均,大幅降低了模型的方差。

nmdbbzcl的博客 628

决策树典型算法ID3原理与代码实现

1.决策树基本概念        顾名思义,决策树就是一棵树,一颗决策树包含一个根节点、若干个内部结点和若干个叶结点;叶结点对应于决策结果(也就是一个类别),其他每个结点则对应于一个属性测试,每个分支代表一个测试输出;每个结点包含的样本集合根据属性测试的结果被划分到子结点中;根结点包含样本全集,从根结点到每个叶子结点的路径对应了一个判定测试序列。 2. ID3算法原理        决策树学习的关键如何选择最优划分属性。一般而

ckc_csdn的博客 4684

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

算法纲目

1 前文 rank 有 pageRank、Learning To Rank(LTR)等 2 PageRank 2.1 算法原理

zhulinniao 1895

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

KNN算法之简介

一、引入 KNN算法是属于分类算法,并且属于监督学习,KNN算法就是其中最典型最容易实现的算法。 我们假设一种运用KNN算法的情况,例如:有五组数据,这五组数据表示人并且有三个维度,分别是一个月逛街、打游戏、吃零食的次数。具体数据如下: 20 5 15 woman 9 18 10 man 21 10 7 woman 17

weixin_38828673的博客 381

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

女程序员做了个梦,神评论。。。

豆瓣上发现一篇神帖,激起了我作为一个程序员的共鸣! 大概意思是这样的: 昨晚梦见男朋友和别的女人在逛街,梦里我的第一反应是查源代码…结果调试半天查不出来为什么显示的是那个女人不是我,最后含泪把那个女人给注释掉了,再一运行就是我男朋友自己逛街了…醒来囧字脸呆了很久…囧rz 为了应景,我今天特意用了绿油油的主题颜色。 重点来了,看看神级评论: 亡羊补牢型 把那个女人的指针指向你即可; 谁让你把男朋友设成 public 的; 心真软,就该把他的接口屏蔽掉; protected 逛街(youOnly);

m0_59164304的博客 6436

kd树 python实现_python机器学习案例教程——K最近邻算法的实现

K最近邻属于一种分类算法,他的解释最容易,近朱者赤,近墨者黑,我们想看一个人是什么样的,看他的朋友是什么样的就可以了。当然其他还牵着到,看哪方面和朋友比较接近(对象特征),怎样才算是跟朋友亲近,一起吃饭还是一起逛街算是亲近(距离函数),根据朋友的优秀不优秀如何评判目标任务优秀不优秀(分类算法),是否不同优秀程度的朋友和不同的接近程度要考虑一下(距离权重),看几个朋友合适(k值),能否以分数的形式表...

weixin_39641257的博客 407

算法竞赛(Python)-AI的思维模式(搜索)

算法竞赛(Python)-AI的思维模式(搜索)

总裁余(余登武)博客 1622

python绘制瀑布图

瀑布图一般反映了数据的增长或下降趋势,它会形成随着顺序逐步叠加或逐步递减的效果。我们普通的柱状图绘制,虽然也能看得出逐渐递增或递减,但是他描绘不出累加或者累减的形式。举个例子,如果第一个数据大于0,第二个数据小于0,则第二个柱子就从第一个柱子的顶部高度开始向下延伸;第二个柱子如果大于0,则从第二个柱子从第一个柱子的顶部高度开始向上拓展;特别的,如果第二个数据小于0(即柱子向下延伸),第三个数据大于0,则第三个柱子从第二个柱子的底部向上延伸。例如。

2301_77634186的博客 2643

机器学习之朴素贝叶斯分类器

朴素贝叶斯分类器 通过概率来判断样本属于哪一种分类 考挂了 喝酒

qq_46439619的博客 628
下一篇: 【Python算法】:压缩
QuantCoder
博客等级 码龄5年 14粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值