3.26小红书算法笔试

第一题 密码学

就是ascii码转换,写出来就能a

第二题 K排序

时间复杂度应该有点高,最后只a了0.64,一开始暴力甚至只a了0.18。后续还有待研究提升速度

第三题 涂色

唯一保留了代码的题

一开始感觉和第一题很像,就是看图说话就行,但是最后应该是有几个用例时间超了,a了0.82

n = int(input())

S = list(map(int, input().split()))

m = int(input())

l = list(map(int, input().split()))

r = list(map(int, input().split()))

operate = input()

x = list(map(int, input().split()))

for i in range(m):

    if operate[i] == '|':

        for j in range(l[i]-1, r[i]):

            S[j] |= x[i]

    elif operate[i] == '&':

        for j in range(l[i]-1, r[i]):

            S[j] &= x[i]

    else:

        for j in range(l[i]-1, r[i]):

            S[j] = x[i]

res = list(map(str, S))

print(' '.join(res))

#我的实习求职记录##软件开发2023笔面经#
全部评论
记录一下第二题的升级版想法:先查找从1开始的最长递增子序列 l。然后看除了这个序列还剩多少个数(n-l),答案就是(n-l + k - 1)//k。解释一下就是,选最长的递增子序列,保证了只需要改动最少的数字个数,即最少的操作次数。每次只能操作K个,所以整除K,又因为最后剩的个数不到K个,也必须进行一次排序。所以是向上取整。ps.这里找从1开始的递增子序列是避免出现 6 7 8 9 1这样的情况发生。
点赞 回复 分享
发布于 2023-03-29 15:00 北京

相关推荐

不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
服从性笔试吗,发这么多笔,现在还在发。
蟑螂恶霸zZ:傻 x 公司,发两次笔试,两次部门匹配挂,
投递金山WPS等公司10个岗位 >
点赞 评论 收藏
分享
dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
09-27 18:15
门头沟学院 C++
在努力的小牛:来告诉你 录用评估挂就是同期好几个候选人,部门负责人选了其他人。
点赞 评论 收藏
分享
2 8 评论
分享
牛客网
牛客企业服务