给定一个数组 nums 和一个值 val 你需要原地移除所有数值等于val的元素,返回移除后数组的新长度,不要使用额外的数组空间
元素的顺序可以改变,你不需要考虑数组中超出新长度后面的元素
示例 1
给定 nums = {3,2,2,3}; val = 3;
函数应该返回新的长度 2 , 并且 nums中的前两个元素均为 2
你不需要考虑数组中超出新长度后面的元素
代码:
public class LingKou4 {
public static void main(String[] args){
int sum=0;
int m2[]=m1(new int[]{1,2,3,3,4,5,5,5,6,7},5,0);
for( int a1=0;a1<m2.length;a1++){
System.out.println(m2[a1]);
}
}
//参数为数组,应删除的数,删除了几个
public static int[] m1(int m[],int flag,int sum){
//检查数组,看删除那个
for(int a=0;a<m.length-1;a++){
if (m[a]==flag)
{
//删除该数,将后面数组补充到前面
for(int c=a;c<m.length-1;c++){
m[c]=m[c+1];
}
// 如果补充的数也是该删的数的话,a--,就是再循环一次本数组下标的数。
if(m[a]==flag)
a--;
sum++;
}
}
int newm[]=new int[m.length-sum];
for( int b=0;b<newm.length;b++){
newm[b]=m[b];
}
return newm;
}
}