2014-12-06 26 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; 
} 
相關問題