某超市有一种促销手段,购买金额超过一定阈值就随机给一个贴花。贴花有不同种类的,种类以编号表示,编号是一个1到100之间的数字。当收集到连续编号的三张贴花时,就可以换一个小礼物。
小明经常去某超市购物,积攒了不少贴花,你帮他看看,能换多少小礼物。
输入格式:
首先是一个正整数N(1<N<100),表示小明手上的贴花的数量。
然后是N个正整数Pi(1⩽Pi⩽1000,每个数字表示一张贴花的编号。
输出格式:
输出一个数字,表示小明可以换的小礼物的数量。如果不能换小礼物,就输出0
。
输入样例:
6
3 2 4 6 6 4
输出样例:
1
2 3 4是一个组合,之后剩下的4 6 6不是连续的编号
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> arrayList = new ArrayList<>();
int n = in.nextInt();
for (int i = 0; i < n; i++) {
arrayList.add(in.nextInt());
}
arrayList.sort((a,b)->{//lambda表达式表示自己比较规则
return a.compareTo(b);
});
int sum = 0;
for (int i = 2; i < arrayList.size();) {//先从下标2开始防止下标越界
if((arrayList.get(i-2)==arrayList.get(i-1)-1)&&(arrayList.get(i)==arrayList.get(i-1)+1)){//判断三个数是否是连续的
sum++;
i +=3;//如果是三个连续数字就后移三个表示换取一个小礼物
}else {
i++;//如果不是三个连续数字那就偏移一个数字再判断下一个数字后面的三个数字是否连续
}
}
System.out.println(sum);
}
}