阿里云9.12后端笔试算法题解

1. 思维题。设x是n位数,令t=123456789100...00(n个0),此时可以构造x*y+z=t,其中z是t除以x的余数,则t-z的前10位必定为1234567890,因此答案为y=(t-z)/x。注意用long。复杂度O(lg(x))。

2. 前缀异或、动态规划。设xor(i)为数组前i个数异或的结果,则f(1)=xor(n), f(i)=f(i-1)^xor(i-1)^xor(n-i+1), i≥2。复杂度O(n)。

3. 线段树。在数组上用线段树维护二元组:(区间内最大值,区间内最大值的最小下标)。按照(购物时间->输入顺序)将所有顾客排序后依次询问:如果 区间的最大值-当前时间>0,输出对应的下标,然后将数组对应元素修改为-1并更新线段树;否则输出-1。复杂度O(m+n*log(m))。

全部评论
大佬可以讲一下,第一题为啥复杂度是logx吗?
点赞 回复 分享
发布于 2024-09-13 06:54 安徽

相关推荐

2024-11-30 22:57
门头沟学院 golang
牛客533433175号:更可气的是我做完这些给我拒了
点赞 评论 收藏
分享
2024-11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务