淘天前端4.3笔试

编程题第二题没写出来,求第二题正确思路。
编程题
1. 给你一个数组,有q次查询,每次查询查区间[l,r],从l到r拼接的数是否能被3整除 
(例如[11,45,14],对于区间[1,3]拼接→114514,不可被整除,输出NO否则YES)

这个,前缀和

3. 给个数组a(长度为n),要找一对数i和j(1≤i<j≤n),满足f(1,i,ai)>f(j,n,aj),求这样的(i,j)共有多少对。其中f(l,r,x)表示在[l,r]区间上出现x的次数

树状数组,不妨先设f1(i)=(1,i,ai),f2(i)=(i,n,ai)。求完f1和f2就可以转为逆序对问题了。

2. 对一个数组,要染色。有两种操作,对一个元素进行染色,或者如果一个区间内,两个端点没染色且对应下标数组值不相等也可以染色。那么,要染完这个数组,最少需要多少次操作。
没写完不过有思路,但只过了43%。

😢还是我太菜了
选择题,不会(氵)

全部评论
第二题反正就是对于dp[i]=min(dp[j]+1)(j=i-1或者所有a[j+1]!=a[i]的位置)进行计算优化吧,可以用个数组存a[i]对应的dp[i-1]的最小值,然后区间查询[1,a[i]-1]和[a[i]+1,n]的最小值,离散化一下加个线段树就行
1 回复
分享
发布于 04-03 21:28 江苏
请问笔试题都有什么题,纯纯写代码的算法题还是还有八股的选择题
点赞 回复
分享
发布于 04-03 21:31 广东
滴滴
校招火热招聘中
官网直投
dp。大白话就是dpi代表前i个最少操作多少次。 状态转移就是要么dp(i-1)+1,要么是a(j+1)!=a(i)时,dp(j)+1。 感觉难点是要优化查询,暴力只能90%,线段树就ac了
点赞 回复
分享
发布于 04-03 21:33 广东
坏了,我的做法是很简单的分类讨论,全过,会不会是数据水
点赞 回复
分享
发布于 04-07 20:59 江苏

相关推荐

2 19 评论
分享
牛客网
牛客企业服务