Java 给定一个长度为奇数的数组,查看数组中的第一个、最后一个和中间值,然后返回一个包含这三个值的数组
因此,对于任何给定的奇数长度数组,我需要查看第一个、中间和最后一个值,然后返回一个仅包含3个值但按升序排列的数组。这就是我所拥有的,但它仅适用于包含3个元素的数组,不适用于其他奇数长度数组: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 ++ ) {
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]);
}