2009-12-21 22 views
-1

我有一個陣列怎麼會發現奇數元素從兩個陣列

int a[] = {1,2,3}; 
int b[] = {1,2}; 

怎麼會發現在陣列

+0

你的問題是不連貫的,第二個數組是什麼? – Alon 2009-12-21 09:13:14

+1

確定您正在尋找提示找到奇數(1,3,5,...)還是其他的? – 2009-12-21 09:18:23

+0

我認爲他正在試圖比較這兩個數組並找出其中的唯一數字。所以根據他的例子提供的答案必須是3 .... – Hariharbalaji 2009-12-21 13:24:29

回答

2
int[] longArray = { 1, 3, 2 }; 
    int[] shortArray = { 1, 2 }; 

    //Check which array is longer, if b longer than a then swap 

    for (int x:longArray){ 
     set.add(x); 
    } 
    for (int x:shortArray){ 
     if (set.contains(x)) 
      set.remove(x); 
    } 
    //odd numbers 
    for (Object i:set.toArray()) 
     System.out.println(i+","); 

我把兩個答案的投票,以前是嵌套循環,並可能對於非常長的陣列來說速度很慢在下一個解決方案中,有些人可能不喜歡TreeSet。

+0

嘿我試圖採取列表而不是設置,但我得到運行時異常IndexOutOfBoundException – Vipul 2009-12-31 08:06:36

+0

在remove方法中發生異常,因爲如果你傳遞int(這裏是這種情況)它需要一個「索引」,如果你想要使用像集合中的那樣移除,那麼你將需要傳遞一個對象說整數,但在這種情況下,它不會工作,因爲整數(1)!=整數(1)。 回到主要點,列表允許重複。集不。因此,除了「刪除實施」之外,您還應該堅持設置,因爲重複也是如此。 – medopal 2010-01-03 06:36:29

0

奇數元件連接各數組項的循環。那些item & 1 == 1是奇怪的。

+1

或項目%2 = 0 – Paolo 2009-12-21 09:13:07

+1

也許,您的意思是項目%2 == 1 – Vanya 2009-12-21 09:13:07

+0

這是一個錯字,我的意思是'&',而不是'%'。 – Konamiman 2009-12-21 09:13:47

1
int[] longArray = { 1, 3, 2 }; 
    int[] shortArray = { 1, 2 }; 

    //Check which array is longer, if b longer than a then swap 

    boolean found = false; 
    int odd = 0; 

    for (int i : longArray) { 
     for (int j : shortArray) { 
      if (i == j) 
       found = true; 
     } 
     if (!found) 
      odd = i; 
     found = false; 
    } 
    System.out.println(odd); 
0

如果你正在談論的一系列比較,看看java-is-there-an-easy-quick-way-to-and-or-or-xor-together-sets

這個SO問題是在設置界面方面講,但List接口也繼承自Collection的相關方法,所以複製你的數組到ArrayList對象變得很容易。

如果你想在本地陣列級別純粹保留它,你可能想要做的事,如:

public int[] findOddElement(int[] fromArray, int[] secondArray){ 
    int[] result = new int[fromArray.length]; 
    int resPointer = 0; 
    for (int i = 0;i < fromArray.length;i++){ 
    boolean notFound = true; 
    for (int j = 0; j < secondArray.length; j++) { 
    if (fromArray[i] == secondArray[j]) { 
    notFound = false; 
    break; 
    } 
    } 
    if (notFound){ 
    result[resPointer] = fromArray[i]; 
    resPointer++; 
    } 
    } 
    if (resPointer > 0 && resPointer < fromArray.length) { 
    int[] newResult = new int[resPointer]; 
    for (int i = 0;i < resPointer; i++) { 
    newResult[i] = result[i]; 

    } 
    return newResult; 
    } 
    return result; 
} 
+0

ArrayList沒有實現Set接口。列表不擴展Set接口。 List和Set是Collection接口的兩個不同的擴展。 – ILMTitan 2009-12-21 19:09:53

+0

是的,我的錯誤:XOR討論中使用的功能由Collection接口的Set和List繼承。編輯答案。 – 2009-12-22 08:21:58

相關問題