DevUI 是一款面向企业中后台产品的开源前端解决方案,它倡导沉浸
、灵活
、至简
的设计价值观,提倡设计者为真实的需求服务,为多数人的设计,拒绝哗众取宠、取悦眼球的设计。如果你正在开发 ToB
的工具类产品
,DevUI 将是一个很不错的选择!
题目描述
题目大意是这样的:
有num
台机器,它们会互发信号singal
,发送的信号被对方接收,就能得到10点贡献值。
发信号的规则有以下几条:
- 单发
机器1给机器2发一个信号17
可以表示成[1, 2, 17]
,如果机器2没有该信号数据,则机器2必须接收,并且返回1
,并且由于机器1发送信号成功,可以增加10
个贡献值;如果机器2有该数据,则不接收,返回0
。
- 群发
机器2给所有机器群发信号29
可以表示成[2, 29]
,没有该信号的机器都必须选择接收,假设有n台机器接收,那么返回n
,并且机器2的贡献值增加10*n
。
- 贡献传递
机器1给机器2发送一个信号15
,机器2接收,那么机器1贡献值+10
;
机器2再将信号15
发送给机器3,机器3接收,那么机器1/2贡献值都将+10
;
机器3再将该信号发送给机器4,机器4接收,那么机器1/2/3贡献值都+10
。
注意:发送不存在的信号,说明系统没有,此时发送者自动会增加该信号。
输入:
- process 执行流程的二维数组,第一个流程是固定的,用来初始化n台机器:
[[n], ...]
输出:
- result 返回结果是一个一位数组,数组项是每个流程的返回值,第一个返回结果是固定的:
[null, ...]
用例一
input
[[3], [1, 2, 17], [2, 29], [2]]
output
[null, 1, 2, 20]
分析:
[3] 说明有3台机器,返回[null]
[1, 2, 17] 机器1发送17给机器2,1/2都没有17,此时2接收,并且1/2都有信号17,1贡献值+10,返回1
[2, 29] 机器2群发29给所有机器,机器1/3都没有29,都接收,并且1/2/3都有29,2贡献值+20,返回2
[2] 查询机器2的贡献值,返回20
最终贡献值:
机器1:10
机器2:20
机器3:0
用例二
input
[[4], [1, 2, 15], [2, 3, 15], [3, 4, 15], [1], [2, 4, 37], [2, 37], [2], [3, 4, 37], [1], [3], [4]]
用例分析:
[4] 4台机器,返回null
[1, 2, 15] 1给2发15,1贡献值+10,返回1
[2, 3, 15] 2给3发15,1/2贡献值都+10,返回1
[3, 4, 15] 3给4发15,1/2/3贡献值都+10,返回1
[1] 查询1贡献,返回30
[2, 4, 37] 2给4发37,2贡献值+10,返回1
[2, 37] 2群发37,1/3接收,2贡献值+20,返回2
[2] 查询2贡献值,返回50
[3, 4, 37] 3给4发37,4已经有了,不接收,返回0
[1] 查询1贡献值,返回30
[3] 查询3贡献值,返回10
[4] 查询4贡献值,返回0
贡献值:
机器1:30
机器2:50
机器3:10
机器4:0
output
[null, 1, 1, 1, 30, 1, 2, 50, 0, 30, 10, 0]
代码:
class SingalProcess {
constructor(num) { // 初始化机器 [num]
// code
}
sendSingal(machine1, machine2, singal) { // 单发信号 [1, 2, 15]
// code
}
sendSingalToAll(machine, singal) { // 群发信号 [2, 29]
// code
}
queryContribution(machine) { // 查询贡献值 [1]
// code
}
}
解答?
求算法勇士帮忙解答。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!