第一题:鬼画符门莲台争夺战
题目描述:鬼画符门莲台争夺战! 虽然鬼画符门是一个三流门派但是近期为了改善宗门弟子质量。 特意引进了进化莲台。 可是部分精英弟子会自己独占一块区域,或者几个精英弟子一块占领一块区域。 小艺作为普通弟子小艺想知道自己还能占领哪些地方。
输入描述:
第一行输入整数n,m.(1<=n<=100,1<=m<=1000)代表大弟子的数量,莲台数量。 以下n行,每行两个整数l,r。(1<=l<=r<=m)代表每个弟子占领的区域。
输出描述:
第一行输出空余的莲台数量; 第二行输出莲台空的坐标。
刚看到这题有点懵,主要是输入不知道是啥。后来才知道是连续的坐标点,这样一来就很简单了,java写法如下:
public static ArrayList<Integer> solution(int n, int m, ArrayList<ArrayList<Integer>> vector){
ArrayList<Integer> result = new ArrayList<>();
// TODO: 请在此编写代码
ArrayList<Boolean> flag = new ArrayList<>(m);
for(int area = 0 ; area < m ; area++){
flag.add(true);
}
for(int i = 0 ; i < n; i++){
for(int j = vector.get(i).get(0)-1 ; j < vector.get(i).get(1) ; j ++ ){
flag.set(j,false);
}
}
int areaCount = 0;
for(int area = 0 ; area < m ; area++){
if(flag.get(area)){//未被占用
result.add(area+1);
areaCount++;
}
}
result.add(0,areaCount);
return result;
}
坑点:main函数里的输出需要修改一下