首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2023-06-18:给定一个长度为N的一维数组scores,代表0~N-1号员工的初始得分,scores【i】=a,

2023-06-18:给定一个长度为N的一维数组scores, 代表0~N-1号员工的初始得分,

scores[i] = a, 表示i号员工一开始得分是a,

给定一个长度为M的二维数组operations,

operations[i] = 。

表示第i号操作为 :

如果a==1, 表示将目前分数

如果a==2, 表示将编号为b的员工,分数改成c,

所有操作从0~M-1, 依次发生。

返回一个长度为N的一维数组ans,表示所有操作做完之后,每个员工的得分是多少。

1

1

0

来自TikTok美国笔试。

答案2023-06-18:

具体步骤如下:

1.创建一个长度为N的一维数组,表示每个员工的初始得分。

2.创建一个长度为M的二维数组,表示操作序列。

3.定义一个函数来处理操作序列。

4.初始化一个节点数组,用于存储每个员工的节点信息。

5.初始化一个空的得分和桶的映射表。

6.遍历数组,为每个得分值创建一个桶,并将对应的员工节点添加到桶中。

7.遍历数组,处理每个操作。

8.对于类型为1的操作,获取小于当前得分的最大得分值,然后将它们的桶合并到新的得分值对应的桶中。

9.对于类型为2的操作,获取该员工节点,并将其从原来的桶中移除,然后添加到新的得分值对应的桶中。

10.遍历得分和桶的映射表,将桶中的员工节点按照顺序取出,更新到结果数组中。

11.返回最终的结果数组。

12.进行功能测试和性能测试。

时间复杂度分析:

• 遍历数组并创建桶,时间复杂度为O(N)。

• 遍历数组,每个操作的时间复杂度为O(logN)(由于使用了有序映射表来实现桶,检索操作的时间复杂度为O(logN))。

• 遍历得分和桶的映射表,每个桶中的员工节点数量为O(1),遍历的时间复杂度为O(N)。

• 总体时间复杂度为O(N + KlogN),其中K为操作序列的长度。

空间复杂度分析:

• 创建一个长度为N的数组,空间复杂度为O(N)。

• 创建一个长度为M的数组,空间复杂度为O(M)。

• 创建一个长度为N的节点数组,空间复杂度为O(N)。

• 创建一个有序映射表,储存每个得分值对应的桶,空间复杂度为O(N)。

• 结果数组的长度为N,空间复杂度为O(N)。

• 总体空间复杂度为O(N + M)。

go完整代码如下:

在这里插入图片描述c++完整代码如下:

在这里插入图片描述

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230618A05OA400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券