题目:
在报警的时间范围内,小茗同学收到了NN名用户的反馈,每位用户编号为11到NN。小茗同学查询线上实验后,统计了用户命中实验的列表,第i位用户命中了ki个实验,第j个实验的编号为 ai,jai,j。
这些用户的反馈不完全是由于一个问题造成的,因此小茗同学需要对这些问题进行分类。小茗同学根据先前的经验会进行 QQ 次询问尝试问题分类,第ii次询问给出一个序列bi,1,bi,2,…,bi,cibi,1,bi,2,…,bi,ci,cici表示第ii次查询的实验数量。当bi,j>0bi,j>0时表示命中实验∣bi,j∣∣bi,j∣,否则表示未命中实验∣bi,j∣∣bi,j∣,小茗同学需要得到符合这些条件的用户数。例如,序列 1,-2,3 表示命中实验 1,3 而没有命中实验 2 的用户数量。
解析·:public static List solution(int n, int m, int q, int[][] arrayN, int[][] arrayQ)
List<Set> userExperiments = new ArrayList<>();//初始化一个List来存储每个用户的实验集合
for (int i = 0; i < n; i++) {
Set experiments = new HashSet<>();//遍历
for (int j = 1; j <= arrayN[i][0]; j++)
experiments.add(arrayN[i][j]); // 将用户命中的实验添加到Set中
List<Integer> result = new ArrayList<>();//初始化结果列表
for (int i = 0; i < q; i++) {
int count = 0;//遍历查询
for (int j = 1; j <= arrayQ[i][0]; j++) {
int experiment = arrayQ[i][j];
if (experiment > 0)//如果实验编号为正,判断用户是否命中该实验,为负则未命中
if (match) {
count++;
}//如果用户满足查询条件,计数加1
result.add(count);//将满足条件的用户数量添加到结果列表中