采用System.arraycopy的方法实现动态数组,在删除元素时,出现数组越界
来源:1-10 均摊复杂度和防止复杂度的震荡
JoshuaLai
2020-08-09 01:03:03
异常:我通过System.arraycopy的方法去实现动态数组,在删除数据的时候,会出现数组越界的情况,但在使用老师的代码,则不会。
通过debug分析,问题似乎出在这里

尝试解决:在学习完复杂度震荡后,我在想是不是arrycopy的方法,导致remove的方法变成了Eager的情况。所以我将remove的resize改成四分之一,然后问题得到了解决。
问题:虽然问题得到了解决,但我感觉这并不是复杂度震荡的原因,因为在debug中,arrycopy方法的第五个参数,明显是有问题的。但我又想不出是什么导致的(arrycopy方法是idea自动生成的),请问bobo老师我的问题出在了哪?
1回答
将 arr[index + 1, size) 这些元素往前移动,包含的元素个数是 size - (index + 1) = size - index - 1。
应该是这个问题。
继续加油!:)
相似问题