指标波动多大才算是异常?

指标波动不可怕,指标波动代表的业务场景才可怕!脱离业务场景谈指标波动就是耍流氓。

指标波动分类

第一类:硬指标波动。

有一些指标是刚性考核业务部门的。比如

考核销售:业绩、回款
考核商品:库存、毛利
考核客服:接听、投诉

这些指标是刚性考核业务结果,意味着:必须达成指定数量,否则即使差1%都是问题。因此,常把它们称为:硬指标。

第二类:软指标波动。

诸如注册用户数、用户点击率、转化率这类指标。
软指标上升下降不见得是问题,有可能是一种新的业务形态,有可能是偶然发生的变化。因此,软指标的变化不会直接引发业务动作。人们更多关心:这种变化到底是好是坏,会不会对硬指标有潜在的影响。因此过程指标只是个参考,不能直接判定好坏,需要和一个关键结果指标挂钩。
注意:硬指标和软指标的区分,不是一成不变的。比如很多互联网公司会考察“用户增长”,这时候注册用户数就是个硬指标,逼着推广部门完成。因此区分硬指标和软指标,要看部门具体KPI要求。

第三类:边缘指标波动。

诸如满意度、知名度等指标。这些指标有共同特点:

1、本身是抽样调查得来的,非全量统计。意味着抽样方法、问卷方法、调查时间等非业务动作,也可能影响到结果。它不能直接反应业务问题。
2、与硬指标、过程指标关系不大,或难以直接验证结果。比如满意度,满意度高是不是意味着100%购买,不见得;满意度低,是不是意味着不买?也不见得。
3、人为操作影响大。比如换一种抽样方式,立马结果变化。比如硬砸一波广告/优惠,数值立马提高。

硬指标>软指标>边缘指标,按这个顺序抓重点,不要面对一屏幕指标高了低了,急的直挠头。

指标波动情形

一次性波动

偶发的、突然性的波动。一般是由于短期、突发的事件而影响的指标的波动,包括快速上升/下降。比如说主播带货,天气突然变化。
这样的波动影响时间短,往往几天的时间便会恢复正常波动。举个单量的例子,在大促期间都是单量的爆发期,大促即为一次“偶发事件”,此时单量的波动即为一次性波动。其具有如下的特征图:
![](https://img-blog.csdnimg.cn/img_convert/f7efe0fba6863c3681964a0ebe4d178f.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=id0CT&margin=[object Object]&originHeight=478&originWidth=1080&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ubde587d2-fbff-46a6-ab19-64a3fdbcc69&title=)

下降

1、指标短期快速下降通常指三天内,快速下降通常指环比10%以上的下降;短期快速下降原因通常是比较严重的事故或者发生了重大的事件。如果是事故能及时修复的话指 标可以快速恢复,效果是来的也快去的也快。但是要引以为戒,尽量避免同类事故放生。
2、指标长期快速下降通常指持续时间超过7天,指标环比30%以上的下降;长期快速下降的场景并不典型,短期快速下降如果发现问题就并及时解决就不会导致长期的快速下降。通常除 非收到恶意攻击没能快速修复或者产品被战略性放弃,不会出现长期快速下降的情况。
3、指标长期缓慢下降通常指持续时间超过7天,指标环比30%以内的下降;长期缓慢下降的原因通常是最难追踪,结果也最为致命的,如果不能及时发现问题,运营人员常常会温水煮青蛙放弃问题追踪,最后给产品埋下隐患,导致一连串的连锁坑。

上升

1、指标短期快速上升通常是由于重大事件引起的,有时候也能觅得良机,如某个热门事件 如果能快速地在平台上展现、传播并二次发酵,就能在短时间内给平台带来大量的流量。最典型的场景就是 微博,一旦明星有些爆炸新闻,微博的流量就会立即上几个台阶。
2、指标长期快速上升通常是产品处于上升期或者有什么长时间的大型活动,典型场景就是爱奇艺有新的大剧和综艺上线,流量就会迅速蹿升。长期快速上升是可遇而不可求的。
3、指标长期缓慢上升通常是因为作对了某件事,使得产品体验得到持续而稳定的改善,比 如引进了优质的内容,推荐模型有新的优化等等。一旦发现这样的趋势就应该挖掘出原因,知其然也知其所 以然。然后加以复制和放大,力求更上一层楼。

周期性波动

这种波动和时间节点强相关,且经常以周或者季、年为循环节点。如羽绒服秋冬季节卖的比较好,到了春天销量就下降,夏天几乎没有销量,且每年几乎都是这样。
![](https://img-blog.csdnimg.cn/img_convert/58b6970062980915035795cc1fb161f0.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u57f6c6c4&margin=[object Object]&originHeight=429&originWidth=1080&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u6e8f9135-90b1-4050-ad5d-9457e516dc6&title=)

持续性波动

从某一时间开始,指标一直呈现上涨/下降趋势。如从今年4月开始,浴室香氛品类的销售量一直呈现上涨趋势,这就属于持续性波动。而持续性波动背后的原因往往是更深刻的,如订单结构的变化、环境因素的影响,从而出现了这种持续性趋势。
![](https://img-blog.csdnimg.cn/img_convert/41c961a5ed0fd7398f37295d1998096c.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u2414423f&margin=[object Object]&originHeight=372&originWidth=914&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u1872d072-3143-4366-ac00-375316e5558&title=)

异常识别

什么样的异常才能叫异常呢?

绝对值预警

绝对值预警,即通过设定一定的阈值,当指标低于/高于阈值的时候,就认为此时指标波动为异常,并进行预警。
举个例子,菜多多作为一个品牌,毛利是其核心的一个指标。对毛利可设置绝对值预警:当毛利为负时,就认为此时是异常的情况,需要探究其发生的原因,并解释这种异常的波动。通过对毛利的绝对值预警,及时发现了部分用户利用一元活动进行薅羊毛、从而导致多个客户毛利为负的行为,并完善了规则减少了品牌的损失。
不仅可以设置低于某一个定值,也可以当指标高于某一定值的时候进行预警,比如在供应链中,某个大仓的分仓比高于40%,就会导致仓库负荷过重从而影响生产。
绝对值预警往往是一次性的波动,这样的异常判定比较简单,只需要设定对应的阈值即可。而阈值的设定可以根据具体的业务的不同和规则而变化。

相对值预警

然而实际业务中,绝对的阈值只能提供一个“底线”。除了一些非常确定性的业务场景外,在其他情况下,过高的“底线”就会导致误报,过低的“底线”可能会漏掉很多需要预警的情况。于是作为绝对值预警的补充,相对值预警可以根据历史数据及波动情况,来判断当前的波动是否为异常。
(1)同比环比
同比环比是业务场景中比较常用的一种异常检测方式,利用当前时间周期与前一个时间周期(同比)和过去的同一个时间周期(同比)比较,超过一定的阈值即认为该点是异常的。实际中常用周/日环比、年同比来进行比较。
![微信截图_20220310135929.png](https://img-blog.csdnimg.cn/img_convert/108f529a6325311e6fb1b044391e09fb.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=ue062de5c&margin=[object Object]&name=微信截图_20220310135929.png&originHeight=361&originWidth=1181&originalType=binary&ratio=1&rotation=0&showTitle=false&size=14448&status=done&style=none&taskId=u9d8afad1-2920-419b-9de6-5359a7128d6&title=)
根据值得正负来判断是上涨还是下降。通过与上周/昨天和去年同期的数据表现进行对比,计算波动值,再将波动值和阈值进行对比,从而得到当前时刻数值是否在正常的波动中。
如在上述的周期性波动的例子中,在11月环比波动都会较大,这时设置同比波动预警会比设置环比波动预警更为合理。于是在波动判别中,需要注意业务实际背景。
![](https://img-blog.csdnimg.cn/img_convert/470bde005cd42e522cf5693d34a18d65.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u8de09a25&margin=[object Object]&originHeight=450&originWidth=1074&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u74068df2-3aec-40fd-a28a-e4db4888ee6&title=)

周期平滑

同比/环比仅使用1~2个时间点的数据,容易受到数据本身质量的影响:当历史同期或上个周期的数据本身就是“异常”的时候,用“异常”的数据来判断是否“异常”就不太合适。
一个很自然的想法就是将所参考的时间点拓展,利用多个时间点的周期数据进行平滑,得到当前时刻指标的对比值。如:
![](https://img-blog.csdnimg.cn/img_convert/a4d10433bc182a114829d12f641a2089.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u3b250908&margin=[object Object]&originHeight=107&originWidth=351&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=uf8c60ab0-5681-42c0-b34f-63257410d86&title=)
则比较值:
![](https://img-blog.csdnimg.cn/img_convert/9c4f4ac28c741790c8f1d9fce241051a.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=uaded77c8&margin=[object Object]&originHeight=57&originWidth=560&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=uff894db9-21c9-402a-93ad-897ad0b9461&title=)
![](https://img-blog.csdnimg.cn/img_convert/d2f3030f18bef6c709786cd9c2a0cc87.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u8704202b&margin=[object Object]&originHeight=57&originWidth=138&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=ua89d0625-0624-4f5d-ac17-11b5bd440bf&title=)
其中![](https://img-blog.csdnimg.cn/img_convert/3549facf1a085f20b6b365fbc9c37fe7.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u25a4f5fe&margin=[object Object]&originHeight=33&originWidth=30&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u94dbf2ba-565a-4e4f-9937-d0d26f8ae95&title=)为平滑系数,当![](https://img-blog.csdnimg.cn/img_convert/6caa2a23732c695c18cf502e514e2995.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u5248d734&margin=[object Object]&originHeight=33&originWidth=30&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u595b960c-4285-44b8-bb9a-6a652e73a92&title=)都为相同的值的时候,此时即为平均值。也可越靠近所研究时间点,赋予更高的平滑系数。所选的时间点可以根据业务需求自行定义。
利用比较值b和所研究的值(1)对比,超过一定的阈值即可认为是“异常”,其波动需要关注。

假设检验(3σ原则)

前面提到比较值需要和所研究的值进行对比,通过阈值来判断波动是否异常。阈值的定义方法和预警方法类似,分为绝对值阈值和自适应(相对值)阈值。

  • 绝对值阈值:根据历史正常情况下的数据波动情况,计算比较值和所研究的值之间的差异情况,从而定义一个上/下限值,即为阈值。
  • 自适应阈值:根据数据波动情况而变化的阈值,其理论基础为假设检验和大数定律,来判断是否为异常。

不妨假设当前时间点的指标数据为b,历史用于对比的指标数据为:
![](https://img-blog.csdnimg.cn/img_convert/49bd3a7363188d3c248afca03ed9b205.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u92595771&margin=[object Object]&originHeight=30&originWidth=225&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=uf3ae0d4f-764c-40cc-8684-b859a88a884&title=)
其中:
![](https://img-blog.csdnimg.cn/img_convert/0a6d91d3d3c2431fbd2fe30ba3805c1e.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=u37f571b7&margin=[object Object]&originHeight=152&originWidth=378&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u4277c654-e61c-490f-85ca-52effb0de07&title=)
分别表示对比数据的平均水平和波动情况。则根据大数定律和假设检验,当
![](https://img-blog.csdnimg.cn/img_convert/d176e4eadd86793424b3934e189074e2.png#clientId=u7d71ab82-4d38-4&crop=0&crop=0&crop=1&crop=1&from=paste&id=ucf1476ec&margin=[object Object]&originHeight=89&originWidth=179&originalType=url&ratio=1&rotation=0&showTitle=false&status=done&style=none&taskId=u9d4066ec-63dc-47e5-93aa-4b0afc2d56c&title=)
即可认为当前时间点的指标数据为异常波动。其中z为置信水平所对应的值,如当z=1.96时,置信水平为95%,即可认为在100次的波动下,有95次是在正常范围内波动的(置信水平及其对应的值可参考标准正态分布表)。当z=2.58,置信水平为99%,即为著名的“3σ原则”。

其他方法

除了以上所介绍的一些常用的、便捷的方法外,也可以通过时间序列、算法模型等来判断异常值。异常值判别是比较常见的研究场景,但由于实操的复杂性,这里仅做一个介绍。

时间序列

业务上的数据往往具有时间属性,如单量随时间的变化、GMV随时间的变化等。那么在时间序列中,通过异常检测的方法,也可以对当前波动是否异常做出判断。常用的方法有:

  • 平均法:移动平均、加权移动平均、指数加权移动平均、累加移动平均等。和上述的“周期平均”的方法类似,可自定义窗口大小和加权系数。
  • ARIMA模型:自回归移动平均模型(ARIMA)是时间序列中一个基础模型,利用过去的几个数据点来生成下一个数据点的预测,并在过程中加入一些随机变量。使用该模型需要确定ARIMA所需的参数,即需要对数据点进行拟合。利用拟合后的方程确定下一个时间点的数据的区间,从而判断当前波动是否为异常。
  • 此外还有ESD、S-ESD、S-H-ESD、STL分解等算法,来检测异常点。

算法模型

  • 基于分类方法:根据历史已有的数据,将其分为正常、异常的两类,之后产生的新的观测值,就可以使用分类的方法去判断新的观测值是否为异常。如使用距离判别的K-means算法、SVM算法等。
  • 神经网络方法:可以对具有时间特性进行建模的LSTM算法、用卷积神经网络来做时间序列分类的Time Le-Net,以及各种的监督式模型,都是能够对异常数据进行识别的算法。

异动归因

确定指标波动区间

定位指标波动的原因最首要的是找到指标波动区间,只有明确了时间点才能过滤掉是是 而非的线索,直击重点。在确定区间后就要开始追踪可能的线索。

流程Check

1、首先要确认数据的源头是否正确

  • 客户端or服务端是否有变动(如上线、压测等),如果有,变动时间是否能match数据变化时间点?
  • ETL层是否有修改,整体流程是否有依赖?整体流程运行是否完成?

2、细分时间维度
如果时间拆分后,时间维度上,数据无误,那么,我们走到第二步:维度拆分;如果时间拆分后,时间维度上有明显差异,那我们走到第三步:业务确认

是否是季节性因素?上月同期or去年同期是否有同样情况?

分解成可追踪的指标

单一的指标往往很难直接找到线索归因,因此在分析的过程中往往需要不断拆解大的 指标,直到当前指标可以被归因为止。
三个原则:
1、要解释50%以上的波动原因(最好80%以上),否则,本次分析未结束
2、所有的维度拆分,都要落地到对应的业务上,倒过来说,所有业务拆分都可以对应到具体业务行为上
3、绝对指标拆分层和业务,算占比;相对指标,算绝对指标的变化

业务确认及归纳原因

**第一步:剔除伪波动。**对于有规律性波动的指标,是否符合规律,才是判断波动的标准,不是看具体数值的大小。总结规律很重要。发现规律以后,只要符合规律的波动,一律是伪波动!伪波动即使波动数值再大也不用慌,都是常事。但是逆规律而动的,则是:**事出反常必有妖!**无论波动大小,都是重大变化,都得小心观察。
**第二步:量化主动行为。**有很多波动是业务主动引发的。比如做促销,拉一波销量比如搞培训,加强工作能力比如做清仓,把库存尽快甩出去这些指标的变化,本身是由业务引起的。对于业务主动引发的指标波动,是否达成了期望目标才是最关键的判断标准,而不是绝对值大小。
 面对这种情况:

  • 首先要收集清楚:到底业务在干啥。
  • 其次,要收集清楚,每一个业务动作的目标和结果,这样能方便评估**“指标波动是否达成业务预期”**。这是个重要的评价标准,一定要标红加粗记下来。主动行为且指标波动达成预期的情况下,业务是不会纠结的。达不成预期的时候,他们就会很想知道:“到底差在哪里?”这时候拿着业务期望值找差距,就很重要

对于达成业务期望的,无论波动范围多大,都属于可接受。既然是主动引起的增长/下跌,肯定是指标变化越大越好。对于未达成期望的,要看期望值差距,差距部分才是要分析的波动值。
**第三步:量化外部影响。**有很多波动是可收集的外部行为导致的。比如政策限制、天气、对手等等。注意:外部因素有很多不能收集到数据,落实影响。也有很多,即使知道了影响,也没法干啥事——总说下雨影响业绩,那也不能烧香求龙王吧。因此,对外部影响,评估其波动大小,不要看一天的绝对数,而是要测算该影响预计持续时间,推算在这个时间内,总共产生的影响值,这个数值才是衡量波动的标准。
第四步:其他意外波动。 是否有既不符合规律,又没有业务主动动作,又没有外部因素,数据本身也没有问题,但是就是发生波动的情况? 
有!这个时候应首先定位波动发生点:

  • 全局性波动,还是局部波动
  • 持续性的,还是突发性的
  • 波动数值,大还是小

判断问题大小的标准:

  • 全局性>局部问题
  • 持续性>短期问题
  • 数字越大,问题越大

锁定问题点后,可以结合指标的属性,思考对策

解决“问题”

就核心指标下降的情况而言,在完全归因之后我们会去解决问题。但是解决了问题之后并不是一劳永逸了,还需要持续观察是不是归因正确。假如我们正确地归因并争取地解决了问题,指标异动通常会恢复,这样也验证了归因的 正确性。反之,我们的归因错误,指标异动就会持续,这时候就需要重新归因。

●  针对硬指标波动:只要硬指标未达标,就是重大问题。考虑采取措施,保住指标
●  针对软指标波动:只要关联的硬指标没崩,就不是重大问题。不纠结一朝一夕的波动,集中精力发现深层原因。
●  针对边缘指标波动:不用害怕!想扭过来分分钟的事。

应对波动总结

▌ 业务部门知道自己要做什么:
1、清楚哪些是硬指标、软指标,哪些是边缘指标
2、清楚自己的行为能对指标影响到什么程度
3、清楚短期、中期、长期自己能干啥
4、清楚自己的短期做的事是否达成了效果
▌ 数据部门,要知道到底发生了什么:
1、哪些是业务主动行为,他们想做到多少
2、哪些是规律性的变化,范围在什么水平
3、哪些可量化外部因素,到底能带来多大变化
4、哪些是异常变化,存在于什么位置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.net 门槛高不高之我见

最近有两大.net高手在争论,一个说门槛高,一个说门槛低。 其实这两个都是高手,为何会有截然不同的看法?其实我感觉这应该是一个“语言”理解的问题,而不是对“事实”理解的差异。比如我觉得一个东西很好,但是…

LeetCode 361. 轰炸敌人(前缀和DP)

文章目录1. 题目2. 解题1. 题目 想象一下炸弹人游戏,在你面前有一个二维的网格来表示地图,网格中的格子分别被以下三种符号占据: W 表示一堵墙 E 表示一个敌人 0(数字 0)表示一个空位请你计算一个炸弹最多能炸多少敌…

led拼接屏报价_液晶拼接屏与led显示屏的区别在哪?

在目前的大屏显示产品中,液晶拼接屏和led显示屏是两种比较普遍的产品,拼接大屏是通过单个液晶拼接单元拼接而成的显示大屏,而led显示屏则是通过发光二极管组成密集点阵组成图像显示,我们通常听到的P1、P2代表的是像素点距离&#…

Powerbi实战--常用新建表代码(单位切换,日期表)

单位切换 #Model_Unit DATATABLE("单位名称",STRING,"OrderBy_unit",INTEGER,"Value",INTEGER, {{ "无", 1, 1 },{ "万", 2, 10000 },{ "百万", 3, 1000000 },{ "亿", 4, 100000000 }})日期相关表…

Windows Phone 8安装包中的文件和独立存储区中的文件访问

安装包中的文件: Windows Phone 8访问安装包中的文件可以直接采用相对路径的形式,"apps/readme.txt"。例如:FileStream stream File.OpenRead("apps/readme.txt"); 也可以采用下面的方式: string installPat…

LeetCode 356. 直线镜像

文章目录1. 题目2. 解题1. 题目 在一个二维平面空间中,给你 n 个点的坐标。 问,是否能找出一条平行于 y 轴的直线,让这些点关于这条直线成镜像排布? 示例 1: 输入: [[1,1],[-1,1]] 输出: true示例 2: 输入…

使用DispatcherTimer计时器

《银光志--Silverlight 3.0开发详解与最佳实践》第3章XAML与Silverlight编程内功,通过本章的学习,相信你会对Silverlight编程模型、XAML、事件处理,以及LINQ查询语言有了一个比较全面的了解,在本章的示例中应用的都是一些基本的XA…

静物摄影用光技巧_室内人像摄影想要拍好,这3种用光技巧你了解吗?

选择靠近窗户的位置在室内可以首先考虑在靠近窗户的位置进行拍摄,因为窗户边上尤其是朝北的窗户会有非常柔和的散射光,当投射进窗户的是直射光线时,摄影者还可以拉上一层很薄的窗帘来缓解一下光线的强度,在靠近窗户的位置&#xf…

SQL基础知识:DDL、DML、DQL

DDL:数据定义语言 对数据库和数据表的管理 数据库 1、创建 create database [if not exists] databasename;2、列举 show databases;3、查看当前所在数据库 select database();4、切换 use databasename;5、删除 drop database [if exists] databasename;数…

LeetCode 660. 移除 9(9进制)

文章目录1. 题目2. 解题1. 题目 从 1 开始,移除所有包含数字 9 的所有整数,例如 9,19,29,…… 这样就获得了一个新的整数数列:1,2,3,4,5,6&…

DllImport的用法

DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应用于方法,要求最少要提供包含入口点的dll的名称。 DllImport的定义如下: [AttributeUsage(Attr…

postman怎么导出测试用例_利用Charles抓包巧转接口自动化测试用例

在前面的文章中,也有介绍类似的工具的。例如:一键将接口请求转为测试用例介绍了开源的mitmproxy录制转化为接口测试用例,postman接口用例转化为python自动化测试用例 文章记录了如何把postman的测试用例转化为python的接口自动化的测试用例&a…

【基础知识】Sticky Bit, SUID,SGID

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ 1.Sticky Bit 1)作用于文件:曾经被一些老的Unix系统用来将可执行文件在第一次执行后放在swap中提高后续该程序的运行速度,现在已经过时。 2)作用于目录&a…

LeetCode 1236. 网络爬虫(BFS/DFS)

文章目录1. 题目2. 解题2.1 BFS2.2 DFS1. 题目 给定一个链接 startUrl 和一个接口 HtmlParser ,请你实现一个网络爬虫,以实现爬取同 startUrl 拥有相同 域名标签 的全部链接。该爬虫得到的全部链接可以 任何顺序 返回结果。 你的网络爬虫应当按照如下模…

启动不起来_国产开源工具:U盘启动工具Ventoy v1.0.29发布——墨涩网

Ventoy是一个制作可启动U盘的开源工具。有了Ventoy你就无需反复地格式化U盘,你只需要把ISO文件拷贝到U盘里面就可以启动了,无需其他操作。你可以一次性拷贝很多个不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择。 无差异支持Legacy B…

众多Android 开源项目再次推荐,学习不可错过

FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb、ePub和fb2。此外还支持直接读取zip、tar和gzip等压缩文档。项目地址:http://www.fbreader.org/FBReaderJ/Angle Angle是一款专为Android平台设计的&#…

LeetCode 1231. 分享巧克力(极小极大化 二分查找)

文章目录1. 题目2. 解题1. 题目 你有一大块巧克力,它由一些甜度不完全相同的小块组成。我们用数组 sweetness 来表示每一小块的甜度。 你打算和 K 名朋友一起分享这块巧克力,所以你需要将切割 K 次才能得到 K1 块,每一块都由一些 连续 的小…

筛选末位数字为1或5_看看广州示范性高中排行榜,怎么填报志愿?如何运用末位考生分数...

人们评价一所高中学校的层次通常会用两个指标:高考升学率和录取分数线,升学率又多以高优率高低为排序标准。在志愿填报期间,不少家长总希望我对学校进行比较。我试以三个维度对广州的70所示范性高中学校(校区)进行比较供大家参考。2016-2018近…

简明Python3教程 8.控制流

简介 迄今为止我们见到的所有程序总是含有一连串语句并且python忠实的顺序执行它们。 那么如何改变它们的执行顺序呢?例如你希望程序根据不同情况作出不同反应,按照当前时间分别 打印出’Good Morning’或’Good Evening’? 也许你已经猜到了&#xff0…

LeetCode 1166. 设计文件系统(哈希map)

文章目录1. 题目2. 解题1. 题目 你需要设计一个能提供下面两个函数的文件系统: create(path, value): 创建一个新的路径,并尽可能将值 value 与路径 path 关联,然后返回 True。 如果路径已经存在或者路径的父路径不存在,则返回 …