【问题标题】:Given an array of ints, which is larger between the first and last elements in the array. Return the new array给定一个整数数组,它在数组中的第一个元素和最后一个元素之间更大。返回新数组
【发布时间】:2015-08-03 05:14:28
【问题描述】:

在这个问题中,我需要找到数组中第一个和最后一个元素之间的最大元素,并将该数组中的所有其他元素设置为该值并返回新数组。我的问题是它只适用于 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;

}

【问题讨论】:

标签: java arrays elements


【解决方案1】:

没有测试这个因为我在移动设备上,希望它可以工作。

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;
    }

【讨论】:

  • 感谢您的帮助!
【解决方案2】:

你想要这个吗?

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;

}

【讨论】:

    【解决方案3】:

    你可以用两行代码做到这一点:

    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;
    }
    

    【讨论】:

      【解决方案4】:

      由于您只检查数组的第一个和最后一个元素之间哪个更大,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]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-14
        • 2016-10-31
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        • 1970-01-01
        • 2011-06-06
        相关资源
        最近更新 更多