今天笔试遇到,记录下
import java.util.*;
/**
* @author XF
* 排序后,从小到大遍历。
* 第二个数与第一个差值<=10,10< && <=20,20<
* 根据各自的情况,进行补充和移动数组指针
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] ls = new int[n];
for(int i=0; i<n; i++){
ls[i] = sc.nextInt();
}
Arrays.sort(ls); //排序,从小到大
int result=0;
for(int i=0; i<n; i++){
int temp = ls[i];
if(i==n-1){ //避免数组越界,单独检测最后两个元素
result+=2;
break;
}
if(i == n-2){
if(ls[n-1]-ls[n-2]<=20){
result +=1;
}else {
result += 4;
}
break;
}
if(ls[i+1]-temp<=10){ //第二个数差值小于等于10
if(ls[i+2]-ls[i+1]<=10){//第三个数差值小于等于10,数组已使用元素向前移动一位
i++;
}else{
result++;
}
i++;
}else if(ls[i+1]-temp>10 && ls[i+1]-temp<=20){//第二个数差值小于等于20,大于10
result++;
i++;
}else{ //大于20
result +=2;
}
}
System.out.println(result);
}
}