给定一个int数组,它在数组中的第一个和最后一个元素之间更大。返回新数组

时间:2015-08-03 05:14:28

标签: java arrays elements

在这个问题中,我需要找到数组中第一个和最后一个元素之间的最大元素,并将该数组中的所有其他元素设置为该值并返回新数组。我的问题是它只能在3个元素的数组中工作。我需要找到一种方法让它适用于任何给定的aaray长度。这就是我到目前为止所做的:

public int[] maxEnd(int[] a) {
     if (a[a.length-1] > a[0]) {
         a[0] = a[a.length-1];
         a[1] = a[a.length-1];
     } else {
         a[1] = a[0];
         a[a.length-1] = a[0];
     }
     return a;

}

4 个答案:

答案 0 :(得分:0)

没有测试这个cos我在移动设备上,希望它有效。

public int[] maxEnd(int[] array){
        Arrays.sort(array);
        System.out.println(array[array.length - 1]);
        int [] results = new int[array.length];
        for (int i = 0; i < array.length; i++){
            results[i] = array[array.length - 1];
        }
        return results;
    }

答案 1 :(得分:0)

你想要这个吗?

public int[] maxEnd(int[] a) {
     if (a[a.length-1] > a[0]) {
         for(int i=0; i < a.length-1; i++){
             a[i] = a[a.length-1];
         }
     } else {
         for(int i=1; i < a.length; i++){
             a[i] = a[0];
         }
     }
     return a;

}

答案 2 :(得分:0)

您可以使用两行代码执行此操作:

public int[] naxEnd(int[] a) {
    final int largest = a[a.length-1] > a[0] ? a[a.length-1] : a[0];
    Arrays.fill(a, largest);
}

第一行是Java的条件运算符,详细描述了here。调用Arrays.fill(a, largest)与编写此循环具有完全相同的效果:

for (int i = 0; i < a.length; ++i) {
    a[i] = largest;
}

答案 3 :(得分:0)

由于您只检查数组的第一个和最后一个元素之间的大小,Math.max()可以为您检查。然后使用Arrays.fill()将每个元素替换为最大值。

public static void main(String[] args) throws Exception {
    System.out.println(Arrays.toString(maxEnd(new int[0])));
    System.out.println(Arrays.toString(maxEnd(new int[] {6})));
    System.out.println(Arrays.toString(maxEnd(new int[] {38, 73})));
    System.out.println(Arrays.toString(maxEnd(new int[] {6, 4, 2, 3, 5, 7})));
}

public static int[] maxEnd(int[] a) {
    if (a.length < 2) {
        return a;
    }

    Arrays.fill(a, Math.max(a[0], a[a.length - 1]));
    return a;
}

结果:

[]
[6]
[73, 73]
[7, 7, 7, 7, 7, 7]