Java 用于删除数组中的零的输出不符合预期?
给定一个整数数组,返回一个顺序相同的数组,并删除所有0 样本输入#1Java 用于删除数组中的零的输出不符合预期?,java,arrays,Java,Arrays,给定一个整数数组,返回一个顺序相同的数组,并删除所有0 样本输入#1 remove({1,2,3,4,5,0,1,2,0,0,2}) {1,2,3,4,5,1,2,2} 样本输出#1 remove({1,2,3,4,5,0,1,2,0,0,2}) {1,2,3,4,5,1,2,2} 样本输入#2 remove({0,0,1,2}) {1,2} 样本输出#2 remove({0,0,1,2}) {1,2} 样本输入#3 remove({0,0,0,0}) {} 样本输出#3 r
remove({1,2,3,4,5,0,1,2,0,0,2})
{1,2,3,4,5,1,2,2}
样本输出#1
remove({1,2,3,4,5,0,1,2,0,0,2})
{1,2,3,4,5,1,2,2}
样本输入#2
remove({0,0,1,2})
{1,2}
样本输出#2
remove({0,0,1,2})
{1,2}
样本输入#3
remove({0,0,0,0})
{}
样本输出#3
remove({0,0,0,0})
{}
MyApproach
我首先计算了有多少个零,然后我创建了一个新数组,只添加了那些不是零的元素
但我没有得到正确的输出
谁能告诉我我做错了什么
以下是我的上述程序代码:
public int[] remove(int[] arr)
{
int count=0;
for(int i=0;i<arr.length;i++)
{
if(arr[i]==0)
{
count++;
}
}
int p[]=new int[arr.length-count];
for(int m=0;m<p.length;)
{
if(arr[m]==0)
{
m++;
}
else
{
p[m]=arr[m];
m++;
}
}
return p;
}
Parameters Actual Output Expected Output
'{0,1,2,3,0,1}' {0,1,2,3} {1,2,3,1}
public int[]remove(int[]arr)
{
整数计数=0;
对于(int i=0;i您需要两个计数器,一个用于从何处复制,另一个用于复制到何处
for (int n = 0, m = 0; m < p.length; m++)
if (arr[m] != 0)
p[n++] = arr[m];
在Java8中,您可以
int n = 0;
for (int x : arr)
if (x != 0)
p[n++] = x;
public static int[] removeZero(int[] ints) {
return IntStream.of(ints)
.filter(i -> i != 0)
.toArray();
}
尝试使用此选项删除数组中的零:
public int[] remove(int[] array)
{
int j = 0;
for( int i=0; i<array.length; i++ )
{
if (array[i] != 0)
array[j++] = array[i];
}
int [] newArray = new int[j];
System.arraycopy( array, 0, newArray, 0, j );
return newArray;
}
public int[]删除(int[]数组)
{
int j=0;
对于(int i=0;i