计算机科学:删除

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

问题21:数据结构操作

下列哪个选项定义了成功从整数数组中删除项的方法?

可能的答案:

public static int[] del(int[] a,int delIndex) {

if(a == null || delIndex < 0 || delIndex >= a.length) {

返回null;

Int [] ret = new Int [a]。长度- 1];

For (int i1=0,i2 =0;i1 < a.length;i1 + +) {

if(i1 != delIndex) {

ret (i2) = (i1);

i2 + +;

返回受潮湿腐烂;

public static int[] del(int[] a,int delIndex) {

if(a == null || delIndex < 0 || delIndex >= a.length) {

返回null;

For (int I = 0;我< = delIndex;我+ +){

if(i == delIndex) {

删除一个[我];

打破;

返回一个;

public static int[] del(int[] a,int delIndex) {

if(a == null || delIndex < 0 || delIndex >= a.length) {

返回null;

Int [] ret = new Int [a]。长度- 1];

For (int I = 0;我< = delIndex;我+ +){

ret[我]=[我];

返回受潮湿腐烂;

public static int[] del(int[] a,int delIndex) {

if(a == null || delIndex < 0 || delIndex >= a.length) {

返回null;

Int [] ret = new Int [a]。长度- 1];

For (int i1=0,i2 =0;i1 < a.length;i1 + +) {

if(i1 == delIndex) {

删除(i1);

返回受潮湿腐烂;

这些都不能正常工作

正确答案:

public static int[] del(int[] a,int delIndex) {

if(a == null || delIndex < 0 || delIndex >= a.length) {

返回null;

Int [] ret = new Int [a]。长度- 1];

For (int i1=0,i2 =0;i1 < a.length;i1 + +) {

if(i1 != delIndex) {

ret (i2) = (i1);

i2 + +;

返回受潮湿腐烂;

解释

当然,这是一种低效的删除方式,但是数组是相当“锁定”的数据结构,在没有重新分配的情况下,它们的大小不能改变。(当然,您可以跟踪最后一个“使用”的索引。然而,这是一个不同的实现,这里没有反映。)正确的答案是仔细地遍历原始数组,将这些内容复制到新数组中,跳过不需要的值。

例子问题1:删除

公共静态布尔值删除(int[] arr, int val) {

布尔值发现= false;

int我;

(我= 0;我<加勒比海盗。长度& & !发现;我+ +){

If (arr[i] == val) {

发现= true;

如果(发现){

For (int j = i;J < arr.length;j++) {

Arr [j - 1] = Arr [j];

arr (arr)。长度- 1]= 0;

返回发现;

对于上面的代码,变量的内容是什么加勒比海盗在执行结束时,如果使用以下参数值调用该方法:

arr ={17, 3、4、4、5、4、3、1}

val = 4

可能的答案:

{3, 5, 17, 3, 1, 0, 0}

{3,4,5,17,4,3,1}

{3, 4, 5, 17, 4, 3, 1,0}

其他答案都没有

{3, 5, 17, 3, 1}

正确答案:

{3, 4, 5, 17, 4, 3, 1,0}

解释

这段代码模拟从数组中删除一个值,方法是移动该值之后的所有元素,使数组不再包含该值的第一个实例。例如,这段代码接受原始数组{17, 3、4、4、5、4、3、1}并注意到4的第一个实例:{3,44、4、5、17日,3日,1}.接下来,它开始向左移动。因此,一些步骤看起来像这样:

{17, 3、4、4、5、4、3、1}

{17, 3、4、5、5、4、3、1}

{3、4、5,17日,17日,4、3、1}

...

{17, 3、4、5、5、4、1、1}

然后,在最后,它将最后一个元素设置为0:

{3、4、5,17岁,4、3、1,0}

问题21:计算机科学

Int [] arr = new Int [20];

Int x = 6,i=2;

For (int j = 0;j < x;j + +) {

Arr [j] = j * 40 + 20;

For (int j = x;>我;j () {

Arr [j] = Arr [j - 1];

加勒比海盗[我]= 20;

For (int j = 0;j < x;j + +) {

system . out。Print (arr[j] + " ");

上面代码的输出是什么?

可能的答案:

20 60 20 140 180 220

20 60 20 100 140 180 220

20 60 20 100 140 180

其他人都没有

20 60 20 100 100 100 100

正确答案:

20 60 20 100 140 180

解释

通过一些代码解析最容易理解这一点:

首先,有一个循环:for(int j = 0;j < x;j++){//…

这将用20 + 0,20 + 40,20 + 80,…因此,它将是:

20, 60, 100, 140, 180, 220

接下来是数组:for(int j = x;>我;J——){//…

这基本上转移了index后面的所有东西落后1。因此你有:

20, 60, 100,100, 140, 180, 220

接下来,你设置arr[2]等于20:

20, 60, 20,100, 140, 180, 220

最后输出每一个第一个6元素。这里要小心。注意它是fromj = 0到x - 1!

因此,答案是:

20 60 20 100 140 180

这个算法基本上实现了一种简单的数组删除。

大学导师的学习工具