字节笔试8.20

Q1
n个珠子成串,有三个红珠子,每次操作交换两个相邻珠子,最少交换几次使得每个红珠子至少相隔k?

如果 n < k*3,直接输出-1

因为三个珠子有三个间隔
调整最小的两个间隔即可

Q2
有n个输入,每次输入牌的花色,数量,点数,求每次打五张,牌组里有几个同花顺?

输入到数组然后排序贪心

Q3
定义一个数组中除了一个元素,其他元素都相同为完美数组,每次操作一个元素+1或-1,最少操作几次可以成完美数组。
把数组排序之后,
数学上,这个问题可以表示为:
S = |x1 - y| + |x2 - y| + |x3 - y| + ... + |xn - y|,使得S最小,显然调整的目标值是中位数,如果数组长度为偶数则是中间两个数的平均值。
分两种情况,最小的不动,或者最大的不动,分别求中位数然后计算答案。

Q4
定一01串权值是,连续相同子序列个数,0001100可以分为000,11,00即权值为3
求一个字符串所有子串的权值和
定义dp[i]为以下标i结尾的所有子串的权值和
if(s.charAt(i)==s.charAt(i-1))
    dp[i]=dp[i-1]+1;
else
    dp[i]=dp[i-1]+i+1;
dp数组之和即为答案,坑点是会爆long,我用BigInteger才过
全部评论
大佬第二题贪心怎么做?
点赞
送花
回复
分享
发布于 2023-08-20 21:11 四川
问题三,我一直算成了平均数,我是**呜呜呜
点赞
送花
回复
分享
发布于 2023-08-20 21:16 上海
秋招专场
校招火热招聘中
官网直投
第三题我也是这样做结果只a了90%,搞不懂
点赞
送花
回复
分享
发布于 2023-08-20 21:31 四川

相关推荐

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