在 Java 中查找数组的中间元素

2022-09-03 16:59:28

给定一个整数数组,我需要返回一个包含原始数组中间元素的新数组。具体来说,如果原始数组的长度为奇数,则结果将有一个元素;如果原始数组的长度为偶数,则结果将有两个元素。

这是我现在的代码,适用于偶数长度的数组。如何使其适用于具有奇数长度的数组?

public int[] makeMiddle(int[] nums) {
    int[] a = new int[2];
    if(nums.length>1) {
        a[1]=nums[nums.length/2];
        a[0]=nums[nums.length/2-1];
        return a;
    } else {
        a[2]=nums[((nums.length+1)/2) -1];
    }
    return a;
}

答案 1

int mid = firstIndex + (lastIndex-firstIndex)/2,将为您提供数组的中间部分。


答案 2

试试这个代码:

public int[] makeMiddle(int[] nums) {
    int[] a;
    if (nums.length %2 == 0) {
        // even-length array (two middle elements)
        a = new int[2];
        a[0] = nums[(nums.length/2) - 1];
        a[1] = nums[nums.length/2];
    } else {
        // odd-length array (only one middle element)
        a = new int[1];
        a[0] = nums[nums.length/2];
    }
    return a;
}

在原始代码中,您没有检查 的长度是偶数还是奇数。nums