字节笔试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才过
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才过
全部评论
大佬第二题贪心怎么做?
问题三,我一直算成了平均数,我是**呜呜呜
第三题我也是这样做结果只a了90%,搞不懂
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享