例子问题
问题11:计算机科学
public static int[] doWork(int[] arr, int val,int index) {
Int [] ret = new Int [arr.]长度+ 1];
For (int I = 0;I < index;我+ +){
Ret [i] = arr[i];
}
Ret [index] = val;
For (int I = index + 1;I < ret.length;我+ +){
Ret [i] = arr[i - 1];
}
返回受潮湿腐烂;
}
上面的代码执行什么?
其他人都没有回答
它从数组中删除一个值,只要它是给定的指数
它通过覆盖之前的值将一个新值插入到数组中
它向数组中插入一个新值,并将该值添加到现有数组中
它在数组中搜索一个值,并在找到该值的索引处存储一个新值
它向数组中插入一个新值,并将该值添加到现有数组中
这样的问题很容易通过仔细阅读相关代码来理解。让我们考虑代码的每个主要部分:
Int [] ret = new Int [arr.]长度+ 1];
这一行代码创建了一个新数组,该数组比原数组长1加勒比海盗
.
For (int I = 0;I < index;I ++)……
这个循环复制到受潮湿腐烂
的价值加勒比海盗
到索引- 1
.
(这是因为I < index
条件)
然后,代码存储值瓦尔
在ret(指数)
For (int I = index + 1;I < ret.length;I ++)……
然后完成将值复制到受潮湿腐烂
.
因此,它所做的是向原始数组插入一个值加勒比海盗
,返回大一个大小的新数组。(这是必要的,因为Java中数组的静态大小。)
例子问题1:插入
public static int[] doWork(int[] arr, int val,int index) {
Int [] ret = new Int [arr.]长度+ 1];
For (int I = 0;I < index;我+ +){
Ret [i] = arr[i];
}
Ret [index] = val;
For (int I = index + 1;I < ret.length;我+ +){
Ret [i] = arr[i - 1];
}
返回受潮湿腐烂;
}
在上面代码的第一个循环中,下列哪一个是可能的错误?
一、阵列加勒比海盗
可能被索引到边界外。
2数组受潮湿腐烂
可能被索引到边界外。
3可能会发生空指针异常。
只有第三
I, II,和III
II和III
I和III
只有我
I和III
最明显的可能错误是数组Arr可能是一个空值。在使用变量之前,需要检查这些类型的值。(如果你做arr[0]
对于空值,将抛出异常。)此外,给index的值可能太大。考虑如果指数= 100
但加勒比海盗
只有4个元素长。然后,你会有受潮湿腐烂
是一个5值数组。当第一个循环开始运行时,您将一直到索引值99(或者至少尝试这样做)我
;h然而,一旦你开始Ret [4] = arr[4]
,将会出现一个越界错误加勒比海盗
,其中只有索引0、1、2和3。当然,以后可能会有其他问题受潮湿腐烂
,但问题只问了第一个循环。
例子问题1:插入
Int [] arr = {0,0,0,0,0,0,0,0,0};
int arrFill = 0;
int val;
//在这里,添加了n个条目。ArrFill是n,假设n <= 9
//变量val现在包含要添加的新值
下列哪个代码块将新值推入加勒比海盗好像它是一堆东西?
其他的都没有
arr[arrFill - 1] = val;
arrFill + +;
Arr [0] = val;
arrFill + +;
arr[arrFill + 1] = val;
arrFill + +;
arr[arrFill] = val;
arrFill + +;
arr[arrFill] = val;
arrFill + +;
让我们假设数组加勒比海盗看起来像下面的整数列表:
{4, 51岁,41岁,0,0,0,0,0,0,0}
假设我们的新值是77.
堆栈可以要么推到开头并将所有内容向后移动,得到如下内容:
{77 4, 51岁,41岁,0,0,0,0,0,0}
但是,没有一个选项可以做到这一点。(不,即使是使用索引的那个也不行0.这个元素并不会添加到数组中,而是替换数组的第一个元素。)
所以,另一个选择是把它放在列表的“末尾”。的变量arrFill正被用于此目的。如果是的话3.,这意味着它是第四个元素的值。因此,你可以设置arr[4] = 77(实际上是4)arrFill).
这将给你:
{4, 51岁,41岁,77年,0,0,0,0,0,0}
的值还要加上1arrFill.
其他选项不能正确地寻址数组。它们要么太大,要么太小。
示例问题21:计算机科学
对或错。
插入数组列表的最坏情况是O(N)。
假
真正的
真正的
插入数组列表通常是O(1)。然而,由于ArrayList使用数组作为其底层数据结构,因此可能需要调整底层数组的大小。调整数组大小需要创建一个新数组,并将所有数据从旧数组复制到新数组,这需要O(N)时间。