美团笔试345什么鬼……
全部评论
众数那题分三种情况 1.数组和能被n整除的 那就所有数都能转换成同一个数 计算平均再算偏差和 答案是1/2偏差和
2.3.情况基于一个结论->无论什么数组 都能使n-1个数变成一样
2.只有一个数不同 其他所有数都相同 且数组和不能被n整除 这种情况答案是0
3.其他情况 计算平均 舍弃离平均最远的数计算新平均并去整。比平均小的数计为下偏差反之为上偏差。计算上偏差和与下偏差和的最大值为答案
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
/**
* @author Q
* @version 1.0
* Create by 2023/8/19 19:31
*/
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n =sc.nextInt();
long[] arr = new long[n];
long sum = 0;
for(int i =0;i<n;i++){
arr[i] = sc.nextLong();
sum+=arr[i];
}
LinkedList<Integer> path = new LinkedList<>();
List<List<Integer>> ans = new ArrayList<>();
build(n, sum, 1, 0,path,ans,arr);
System.out.println(ans.size()%1000000007);
}
private static void build(int k, long n, int startIndex, long sum,LinkedList<Integer> path,List<List<Integer>> ans,long[] arr) {
if (sum > n) return;
if (path.size() > k) return;
if (sum == n && path.size() == k) {
ans.add(new ArrayList<>(path));
return;
}
for(int i = 1; i <= 9; i++) {
if(i==arr[path.size()]) continue;
path.add(i);
sum += i;
build(k, n, i , sum,path,ans,arr);
sum -= i;
path.removeLast();
}
}
}
第四题用的回溯
为啥你有5道题
第四题是dp,开到nx501就行
3很简单,前缀和维护两种序列的异常点数量,然后遍历所有子字符串就行了。4,5真没看懂。。。
只a了三题,后面两个分别是01串的权重和众数都不会
345到底什么思路啊😭
相关推荐

点赞 评论 收藏
分享
07-03 14:11
广西大学 渠道销售 点赞 评论 收藏
分享