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