import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr={1,2 ,3 , 78 , 34 , 33 , 16 , 35};
Arrays.sort(arr);
for(int i=arr.length-1;i>=0;i--){
System.out.print(arr[i]+"\t");
}
System.out.println();
int a=0;
for(int i=arr.length-1;i>=0;i--){
if(i>0&&a==arr[i]&&arr[i]-arr[i-1]==1){
continue;
}
if(i>0&&arr[i]-arr[i-1]==1){
a=arr[i-1];
System.out.print(arr[i]+"\t");
}else{
System.out.print(arr[i]+"\t");
}
}
}
}
追问可以描述一下多个连续数只输出其中最大最小的算法过程么
追答如果是连续的数,就把下一个数先保存到a中,如果下个数和a是相等的就跳过
这样会准确点
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] arr={1,2 ,3 , 78 , 34 , 77, 33 ,33, 16 ,1,0, 35,0};
Arrays.sort(arr);//排序
for(int i=arr.length-1;i>=0;i--){
System.out.print(arr[i]+"\t");
}
System.out.println();
int a=-1000;//定义a
for(int i=arr.length-1;i>=0;i--){
//第二步:a和这个数(其实就是上次循环的第二个数)相比,还是相差为1或相等就跳过此处循环
if(i>0&&a==arr[i]&&(arr[i]-arr[i-1]==1||arr[i]-arr[i-1]==0)){
a=arr[i-1];//更新a的值
continue;
}
if(i>0&&(arr[i]-arr[i-1]==1||arr[i]-arr[i-1]==0)){//第一步:如果这个数和下一个数是相差为1或为0,则把第二个数保存到a中
a=arr[i-1];
System.out.print(arr[i]+"\t");//输出连续的数最大或最小的
}else{//不是连续的数
System.out.print(arr[i]+"\t");
}
}
}
}