首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果数组的长度为奇数,则需要帮助移除中间元素;如果长度为偶数,则需要删除中间的两个元素。

如果数组的长度为奇数,则需要帮助移除中间元素;如果长度为偶数,则需要删除中间的两个元素。
EN

Stack Overflow用户
提问于 2016-01-07 03:27:56
回答 3查看 5.3K关注 0票数 1

基本上,我的任务之一是,如果数组是奇数,删除中间元素,或者如果数组是偶数,则删除中间两个元素。

这是我的代码,它可能是草率的,因为这是我的第一年高中Java。

代码语言:javascript
复制
 public static void removeMiddle(int[] arr)
 {
     int size = arr.length;
     if(size % 2 ==0)
     {
         int x = arr.length/2 -1;
         for(int i = x; i <= arr.length - 2; i++)
         {   
             arr[i] = arr[i + 2];
         }
     }
     else
     {
         int z = arr.length/2;
         for(int i = z; i < arr.length - 1; i++)
         {
             arr[i] = arr[i + 1];
         }
     }
 }

如果我们被困住了,我会遵循老师给我们的伪码。当我运行它时,它添加了一个额外的元素。

例如,我的数组3、6、-2、8、9在运行后更改为3、6、8、9、9。

  1. 创建一个名为"size“的局部变量,该变量存储传入的数组的长度。 * 2.如果数组的大小恰好是偶数,请执行以下操作:* a.创建一个局部变量,该变量表示要删除的第一个变量,方法是将其赋值小于数组* b的一半。运行一个for-循环,从您刚才计算的值开始(代表删除的第一个值)和*结束值小于数组的大小* i。在for-循环中,将数组当前索引处的值赋值为2*大于当前索引* 3。否则,如果数组的大小碰巧是奇数,请执行以下操作:* a。创建一个局部变量,该变量代表要删除的第一个变量,方法是将其赋值为数组* b的一半大小。运行一个for-循环,从您刚才计算的值开始(代表删除的第一个值),*终止值小于数组* i的大小。将数组当前索引处的值赋值为1*大于当前索引的值

有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2016-01-07 03:53:03

我不确定我是否正确地理解了你的问题。

例如,如果数组的大小为8(8个元素),那么在方法之后返回的新数组应该返回一个包含6个元素的新数组吗?

首先,将您提供的方法的返回类型更改为int[]。

您可以尝试实现堆栈或队列,或者简单地坚持使用数组和一组条件。

代码语言:javascript
复制
int size = arr.length;
int newArr[];
if(size % 2 ==0) {
    newArr = new int[size-2];
    for (int i = 0; i < (newArr.length/2); i++) {
        newArr[i] = arr[i];
        System.out.println(newArr[i]);
    }
    for (int i = (newArr.length/2); i < newArr.length; i++) {
        newArr[i] = arr[i+2];
        System.out.println(newArr[i]);
    }
}
else {
    newArr = new int[size-1];
    for(int i = 0; i < (newArr.length/2); i++) {
        newArr[i] = arr[i];
        System.out.println(newArr[i]);
    }
    for (int i = (newArr.length/2); i < newArr.length; i++) {
        newArr[i] = arr[i+1];
        System.out.println(newArr[i]);
    }
}

如果输入为123456,这将产生1256,如果输入为12345,则产生1245。

票数 2
EN

Stack Overflow用户

发布于 2016-01-07 03:49:20

在我看来,在“偶数”子句中,您应该更改

代码语言:javascript
复制
for(int i = x; i <= arr.length - 2; i++)

代码语言:javascript
复制
for(int i = x; i < arr.length - 2; i++)

你需要从1,2,3,4,5,6中得到像1,2,5,6或1,2,5,6这样的数组吗?

票数 0
EN

Stack Overflow用户

发布于 2016-01-07 04:13:40

要从数组中删除元素,需要从现有数组中创建一个新数组,然后返回结果,或者将原始数组的引用更改为新创建的数组。

代码语言:javascript
复制
public static void removeMiddle(int[] myArray)
        {
            int size = myArray.length;
            int[] resultArray;
            if(size % 2 ==0)
            {
                resultArray = new int [myArray.length-2];
            }
            else
            {
                 resultArray = new int [myArray.length-1];

            }
            int mid1 =  myArray.length/2;
            int mid2 = myArray.length/2 - 1;
            int index = 0;
            for(int i=0;i<myArray.length;i++)
            {
                if(size % 2 ==0 && (i==mid1 || i==mid2))
                {
                    continue;
                }
                else if(!((size % 2) ==0) && i==mid1)
                {
                    continue;
                }

                resultArray[index] = myArray[i];
                index++;
            }

            for(int i=0;i<resultArray.length;i++)
            {
                System.out.println("array[" + i + "] = " + resultArray[i]);
            }
        }

如果myArray将值保持为1,2,3,4,5,6,7,则产出如下

代码语言:javascript
复制
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 5
array[4] = 6
array[5] = 7

如果它的值为1,2,3,4,5,6,产出如下

代码语言:javascript
复制
array[0] = 1
array[1] = 2
array[2] = 5
array[3] = 6
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34646896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档