蓝桥杯 算法提高 6-9删除数组中的0元素 Java
资源限制
时间限制:1.0s 内存限制:512.0MB
要求
编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接收数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。
输入时首先读入数组长度,再依次读入每个元素。
将调用此函数后得到的数组和函数返回值输出。
样例输入
7
2 0 4 3 0 0 5
样例输出
2 4 3 5
4
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int a=input.nextInt();//接收数组的长度
int[] oldArr=new int[a];
for(int i = 0; i < a; i++){
oldArr[i] = input.nextInt();
}//将输入的每个数都存储在oldArr数组中
input.close();
int zero=0;
for(int i=0;i<a;i++){
if(oldArr[i]==0){
zero++;
}
}//计算oldArr数组0的个数
int newArr[]=new int[a-zero];//将新数组的长度定义为原数组长度-0的个数
int j=0;
for(int i=0;i<a;i++){
if(oldArr[i]!=0){
newArr[j]=oldArr[i];
j++;
}
}//将oldArr数组中不为0的值储存在新数组中newArr
for(int n:newArr){
System.out.print(n+" ");
}//将新数组的每一位输出并空格
System.out.printf("\n");//换行
System.out.println(newArr.length);//输出新数组的长度
}
}