Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 移除元素法和滚动元素,动态数组_Java_Arrays_Dynamic Arrays - Fatal编程技术网

Java 移除元素法和滚动元素,动态数组

Java 移除元素法和滚动元素,动态数组,java,arrays,dynamic-arrays,Java,Arrays,Dynamic Arrays,我要做的是从数组中删除元素,并(因为我使用了泛型)将删除的元素设置为null;在此之后,我必须向左滚动元素(例如),以擦除从以下内容开始的数组的空值: public int removeElements(T val) { /// Complexity: O(N) int cantRemoved = 0; for (int i = 0; i < arr.length; i++) { if (val == arr[i]) { c

我要做的是从数组中删除元素,并(因为我使用了泛型)将删除的元素设置为null;在此之后,我必须向左滚动元素(例如),以擦除从以下内容开始的数组的空值:

public int removeElements(T val) {
    /// Complexity: O(N)

    int cantRemoved = 0;
    for (int i = 0; i < arr.length; i++) {
        if (val == arr[i]) {
            cantRemoved = cantRemoved + 1; 
            arr[i] = null;
        }
    }
    return cantRemoved; //Element removed
}
public int removeements(T val){
///复杂性:O(N)
int=0;
对于(int i=0;i
我试图将元素向左滚动,但它总是留下一个空值

我会感谢你的帮助,因为我不知道还能做什么

以下是全部代码(在西班牙语xd上):

/*
*Puntos ejercicio:9(+2个附加)
*
*在ejercicio中,实现动态数组的可变操作:
*插入前(位置A):agrega los elementos del arreglo A en la posicion位置
*移除元素(x):borra los elementos iguales a x
*获取(pos):在posicion pos中获取
*获取(位置,val):asigna el valor val al elemento en la Position位置
*调整大小(新CAP):agranda o reduce el arreglo dinamico a la nueva capacidad
*动态数组
*
*这是一个动态数组,它是一个动态数组
*新元素。这是一个很好的例子
*elementos。效用系数1.5。
*
*无需重新调整尺寸,无需重新设计。
*
*
*我要做的事情是多大的。卡达塔格勒斯迪本酒店
*completar。
*
*说明:
*a)不存在任何与codigo相关的borren los评论
*b)不允许在java.util中使用数据结构*
*c)允许阿格雷加·坎波斯·阿迪西奥纳莱斯(agregar campos adicionales)发表声明
*d)在梅托多斯附近的许可证
*e)无埃杰克塔石油公司(ej.accesar)的信用证
*伤残人士),但不包括死亡
*
*/
公共类DynArray{
final int INITIAL_SIZE=1;//capacidad inicial del arreglo
最终双增长系数=1.5;//crecimiento系数
二等兵T[]arr;//他是一名战士
private int size;//cantidad de elementos演示
/**
*建造商:你是一名年轻人吗
*/
公共DynArray(){
arr=(T[])新对象[初始大小];
尺寸=0;
}
/**
*建造商在阿雷格洛基地建造了一座新的建筑
*recibe como参数
*/
公共DynArray(T[]A){
//TODO:实现程序
//勇气:1普托
arr=(T[])新对象[A.length];
for(int i=0;i=pos;i--){
arr[i+A.length]=arr[i];
}
尺寸=尺寸+长度;
对于(inti=pos,j=0;i0)
决议附件(“,”);
其他的
决议附件(“”);
附件(arr[i]);
}
决议附加(“]);
return res.toString();
}
公共静态void main(字符串[]args){
DynArray A=新DynArray(新整数[]{4,2,2,3,0,5,-1,-3,1});
//A.insertBefore(2,新整数[]{3,4,1});
系统输出打印项次(A);
int nRemoved=A.removeElements(3);
System.out.println(“移除的元素数:+nRemoved”);
系统输出打印项次(A);
}
}
//TODO:修改clase DynArray段落实用程序Java泛型。
//Tambien deben la clase Lab1d的metodo main修改版
//勇气:2个额外的puntos
试试这段代码

    public static int removeElements(T val) {
    /// Complexity: O(N)

    int cantRemoved = 0;
    for (int i = 0; i < arr.length; i++) {
        if (val == arr[i]) {
            cantRemoved++;
            i++;
        }
        if(i < arr.length)  arr[i - cantRemoved] = arr[i];
    }
    return cantRemoved; //Element removed
}
公共静态整数删除元素(T val){
///复杂性:O(N)
int=0;
对于(int i=0;i
通过将元素移动到已删除元素的位置,您开始做正确的事情,但您只移动了一次,所以如果您删除第一个元素,您将只将null移动到第二个位置。所以,您需要在数组中有两个指针来正确处理所有空删除

代码应该如下所示:

public int removeElements(T val) {
    // TODO: implementar
    // Valor: 2.5 puntos
    // Complejidad esperada: O(N)
    int cantRemovidos = 0;
    for (int i = 0, j = 0; i < arr.length; i++) {
        if (val == arr[i]) {
            cantRemovidos = cantRemovidos + 1;
        } else {
            arr[j] = arr[i]; // keeping the item
            j++; // shifting second pointer
        }
    }
    size = size - cantRemovidos; // maintain size, here you can perform array shrink
    return cantRemovidos;
}
public int removeements(T val){
//TODO:实现程序
//勇气:2.5普托
//埃斯佩拉达:O(N)
int cantRemovidos=0;
对于(int i=0,j=0;ipublic int removeElements(T val) {
    // TODO: implementar
    // Valor: 2.5 puntos
    // Complejidad esperada: O(N)
    int cantRemovidos = 0;
    for (int i = 0, j = 0; i < arr.length; i++) {
        if (val == arr[i]) {
            cantRemovidos = cantRemovidos + 1;
        } else {
            arr[j] = arr[i]; // keeping the item
            j++; // shifting second pointer
        }
    }
    size = size - cantRemovidos; // maintain size, here you can perform array shrink
    return cantRemovidos;
}