Q1n个珠子成串,有三个红珠子,每次操作交换两个相邻珠子,最少交换几次使得每个红珠子至少相隔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才过