Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给定一个长度为奇数的数组,查看数组中的第一个、最后一个和中间值,然后返回一个包含这三个值的数组_Java_Arrays - Fatal编程技术网

Java 给定一个长度为奇数的数组,查看数组中的第一个、最后一个和中间值,然后返回一个包含这三个值的数组

Java 给定一个长度为奇数的数组,查看数组中的第一个、最后一个和中间值,然后返回一个包含这三个值的数组,java,arrays,Java,Arrays,因此,对于任何给定的奇数长度数组,我需要查看第一个、中间和最后一个值,然后返回一个仅包含3个值但按升序排列的数组。这就是我所拥有的,但它仅适用于包含3个元素的数组,不适用于其他奇数长度数组: public int[] maxTriple(int[] nums) { int toSwap, indexOfSmallest = 0; int i, j, smallest; for( i = 0; i < nums.length; i ++ ) {

因此,对于任何给定的奇数长度数组,我需要查看第一个、中间和最后一个值,然后返回一个仅包含3个值但按升序排列的数组。这就是我所拥有的,但它仅适用于包含3个元素的数组,不适用于其他奇数长度数组:

public int[] maxTriple(int[] nums) {

  int toSwap, indexOfSmallest = 0;
    int i, j, smallest;

    for( i = 0; i < nums.length; i ++ )
    {               

        smallest = Integer.MAX_VALUE;

        for( j = i; j < nums.length; j ++ )
        {
            if( nums[ j ] < smallest )
            {
                smallest = nums[ j ];
                indexOfSmallest = j;
            }                   
        }

        toSwap = nums[ i ];
        nums[ i ] = smallest;
        nums[ indexOfSmallest ] = toSwap;
    }

    return nums;
}
public int[]maxtree(int[]nums){
int-toSwap,indexOfSmallest=0;
int i,j,最小值;
对于(i=0;i
你要做的事叫做。以下是代码:

int[]maxtree(int[]nums,int size){
对于(int i=0;i
您将获得已排序的数组,因此,如果您只需要第一个、中间和最后一个值,可以这样尝试:

public int[] maxTriple(int[] nums) {

      int toSwap, indexOfSmallest = 0;
        int i, j, smallest;

        for( i = 0; i < nums.length; i ++ )
        {               

            smallest = Integer.MAX_VALUE;

            for( j = i; j < nums.length; j ++ )
            {
                if( nums[ j ] < smallest )
                {
                    smallest = nums[ j ];
                    indexOfSmallest = j;
                }                   
            }

            toSwap = nums[ i ];
            nums[ i ] = smallest;
            nums[ indexOfSmallest ] = toSwap;
        }

        nums=new int[]{nums[0],nums[(nums.length/2)],nums[nums.length-1]};
        return nums;
    }
public int[]maxtree(int[]nums){
int-toSwap,indexOfSmallest=0;
int i,j,最小值;
对于(i=0;i
你想得太多了。如果数组的长度小于3或偶数,则返回null

否则,获取第一个元素、最后一个元素和中间元素,并将它们存储在新数组中。使用
数组对数组进行排序。Sort()
并返回新数组

public static void main(String[] args) throws Exception {
    System.out.println(Arrays.toString(maxTriple(new int[] {1, 4, 2, 4})));
    System.out.println(Arrays.toString(maxTriple(new int[] {1, 4, 2, 4, 5})));
    System.out.println(Arrays.toString(maxTriple(new int[] {75, 99, 4, 999, 4, 65, 23})));
}

public static int[] maxTriple(int[] nums) {
    if (nums.length < 3 || nums.length % 2 == 0) {
        return null;
    }

    int[] result = new int[3];
    result[0] = nums[0]; // First
    result[1] = nums[nums.length - 1]; // Last
    result[2] = nums[nums.length / 2]; // Middle
    Arrays.sort(result);

    return result;
}

我对三元运算符使用了另一种方法。我希望它能有用

public int maxTriple(int[] nums) {
    return (nums[0] > nums[nums.length/2]) ? (nums[0] > nums[nums.length-1] ? 
            nums[0] : nums[nums.length-1]) : (nums[nums.length/2] > nums[nums.length-1] 
                    ? nums[nums.length/2] : nums[nums.length-1]);
}
此代码工作正常:

public int[]maxtree(int[]nums){
int[]myArray=新的int[3];
int length=nums.length;
int-middle=nums[(长度+1)/2-1];
int last=nums[长度-1];
int first=nums[0];
myArray[0]=nums[0];
myArray[1]=nums[middle];
myArray[2]=nums[last];
返回myArray;
}

您正在处理的问题是什么?你有没有发现任何错误?这不是一个很有用的信息,你实际上面临什么问题?它适用于3个元素的数组,但不适用于其他奇数长度arrays@ZurielDelC.it您的for循环似乎只经过一次阵列?我想是吧?只需进行一次交换,这就是您的阵列所包含的全部内容?为成功和失败的情况提供一些输入/输出?
public int maxTriple(int[] nums) {
    return (nums[0] > nums[nums.length/2]) ? (nums[0] > nums[nums.length-1] ? 
            nums[0] : nums[nums.length-1]) : (nums[nums.length/2] > nums[nums.length-1] 
                    ? nums[nums.length/2] : nums[nums.length-1]);
}