3.13 字节春招第三次笔试简洁题解
第一题:
给一个只包含小写字母字符串,然后一个数k,每次从字符串中取一个字符,其中'a'=1,'b'=2...'z'=26,取a则k-=1,取b则k-=2,问最多能取多少个字母?
思路:直接将字符串排序,从最小的开始取,然后减去对应的值即可。
第二题:
简化后就是:从原点跳到k最少要多少次,规定第i次必须跳i步,不能少不能多。
思路:找规律,首先找到1+2+...+n<k的最大的n,然后对k分奇偶讨论,再对n%4的结果讨论。
第三题:
L*L的带值二维网格,从左上角(0,0)出发,找到和恰好为k,且终点落在网格边界的最长路径的长度。
直接从原点开始dfs就过了。(都不带剪枝的)
第四题:
一组糖果,给出所有糖果的价值v和数量c,现在可以对数组v做一次[L,R]的区间翻转,数组c不变,求sum(v[i]*n[i])的最大值(O(n3)40分,O(n2)满分)
首先用二维数组dp[i][j]表示交换i和j后的cost差,也就是d[i][j]=v[i]*c[j]+v[j]*c[i]-v[i]*c[i]-v[j]*c[j]
然后利用中心扩展的思想双重循环搞定。
#2022春招##笔试题目##字节跳动#