Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.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_C++ - Fatal编程技术网

Java 删除两个给定索引之间元素的最佳算法

Java 删除两个给定索引之间元素的最佳算法,java,c++,Java,C++,所以我想学习算法的效率。我知道如何从数组中删除一个元素,但不知道如何在两个索引之间删除。让我们假装 list={1,2,3,4,5,6,7,8,9,10},我们使用参数调用removeBetween方法: removetween(2,6) 您可以遵循的一般算法方向: 要删除两个给定索引之间的所有数字,例如(FirstIndex,LastIndex): 将索引0到FirstIndex中的所有元素复制到结果数组中 接下来将所有元素从LastIndex复制到Array.lenght()-1索引到上面

所以我想学习算法的效率。我知道如何从数组中删除一个元素,但不知道如何在两个索引之间删除。让我们假装
list={1,2,3,4,5,6,7,8,9,10}
,我们使用参数调用
removeBetween
方法:
removetween(2,6)


您可以遵循的一般算法方向:

要删除两个给定索引之间的所有数字,例如(FirstIndex,LastIndex):

  • 将索引0到FirstIndex中的所有元素复制到
    结果
    数组中

  • 接下来将所有元素从LastIndex复制到Array.lenght()-1索引到上面相同的
    结果
    数组


返回
result

因此,如果您的项目位于数组列表中,您可以执行以下操作:

ArrayList<Whatever object is> newElements = yourlist.sublist( 0, firstIndex );
newElements.addAll( yourlist.subList( LastIndex + 1, yourlist.size() ) ; 
ArrayList newElements=yourlist.sublist(0,firstIndex);
newElements.addAll(yourlist.subList(LastIndex+1,yourlist.size());

<代码>你使用java或C++容器吗?容器中的索引通常带有<代码>擦除< /代码>。efficient@LuiggiMendoza是的,效率不高。我将删除C++,而不是C++,这样我就可以看到正在进行的事情,但是我也想学习java语言,因为java可以使它更有效。icient使用这些类将为您做大量的工作。当然,要注意您是否希望其中任何一方都具有包容性/排他性,这可能是一个可行的方法。使用java中的System.arrayCopy()、C中的memcpy()和std:copy()在C++中,最高效率的数组有一个数组。你可以从数组中创建数组,创建新的数组,然后将它转换成数组。但是这看起来不是正确的方法。
ArrayList<Whatever object is> newElements = yourlist.sublist( 0, firstIndex );
newElements.addAll( yourlist.subList( LastIndex + 1, yourlist.size() ) ;