2014-12-06 63 views
1

这里是问题:给出一个数组arr,返回一个数组,其中只包含从arr开始的奇数整数。关于如何解决我的代码的任何提示?

几个例子:

  • youMakeMeOdd({1,2,3})→{1,3}
  • youMakeMeOdd({1,3,5})→{1,3,5 }
  • youMakeMeOdd({2,4,6})→{}

这里是我的代码:

public int [] youMakeMeOdd(int [] arr) 
{ 
    int x=0; 
    for (int i=0; i<arr.length; i++) 
    { 
     if (arr[i]%2==1) 
     { 
      x++; 
     } 
    } 

    for (int i=0, m=0, j=0; j<x; m++, j++) 
    { 
     if (arr[i]%2==1) 
     { 
      arr[m]=arr[j]; 
     } 
    } 
return arr; 
} 

非常感谢!

+0

ü可以使用ArrayList? – 2014-12-06 08:55:39

+0

使用ArrayList,'列表 list = new ArrayList (Arrays.asList(array));''alist.remove(1); //删除位置处的元素1 – Moes 2014-12-06 09:03:49

+0

其实我不太确定ArrayLists是否被允许。 – 2014-12-06 17:21:06

回答

1

Java中的数组是固定大小的:它们的长度不能改变。

所以你需要创建并返回一个新的数组,因为结果可能包含更少的元素。

确定输出数组的大小(计算奇数值)以知道结果数组的长度,然后遍历输入并将奇数添加到输出中。

例子:

public static int[] youMakeMeOdd(int[] arr) { 
    int count = 0; 
    for (int n : arr) 
     if (n % 2 == 1) 
      count++; 

    int[] result = new int[count]; 

    int i = 0; 
    for (int n : arr) 
     if (n % 2 == 1) 
      result[i++] = n; 

    return result; 
} 
相关问题