2016-02-28 69 views
-2

寫方法兩個數組列表

public static ArrayList<Integer> merge(ArrayList<Integer> a, ArrayList<Integer> b) 

該合併兩個數組列表,交替從兩個數組列表元素。如果一個數組 列表比另一個短,那麼只要您可以替換,然後從較長的數組列表中追加其餘元素即 。例如, 如果是

1 4 9 16 

和b是

9 7 4 9 11 

然後合併返回數組列表

1 9 4 7 9 4 16 9 11 
+1

那麼,什麼是你的問題? – duffymo

+0

我需要合併列表。 合併返回數組列表1 9 4 7 9 4 16 9 11 a和b的合併 – Harrison

+1

那麼,什麼是不正確的? – developer033

回答

1
public static ArrayList<Integer> merge(ArrayList<Integer> x, 
     ArrayList<Integer> y) { 
    ArrayList<Integer> temp = new ArrayList<Integer>(x.size() + y.size()); 
    int i = 0, j = 0; 
    for (i = 0, j = 0; i < x.size() && j < y.size(); i++, j++) { 
     temp.add(x.get(i)); 
     temp.add(y.get(j)); 
    } 
    while (i < x.size()) { 
     temp.add(x.get(i)); 
     i++; 
    } 
    while (j < y.size()) { 
     temp.add(y.get(j)); 
     j++; 
    } 
    return temp; 

} 

Merged is [1, 9, 4, 7, 9, 4, 16, 9, 25, 11, 36, 21, 49, 64, 81]

0
public static ArrayList<Integer> merge(ArrayList<Integer> x, ArrayList<Integer> y) 
{ 
    ArrayList<Integer> temp = new ArrayList<Integer>(x.size() + y.size());  
    int m = x.size() > y.size() ? x.size() : y.size(); 

    for (int i = 0; i < m; i++) 
    { 
     if (i < x.size()) temp.add(x.get(i)); 
     if (i < y.size()) temp.add(y.get(i)); 
    } 

    return temp; 
} 

輸出:

Merged is [1, 9, 4, 7, 9, 4, 16, 9, 25, 11, 36, 21, 49, 64, 81]