10

メソッドを書く

public static ArrayList merge(ArrayList a, ArrayList b)

2 つの配列リストをマージし、両方の配列リストの要素を交互に入れ替えます。1 つの配列リストが他の配列リストよりも短い場合は、可能な限り交互に並べてから、長い配列リストから残りの要素を追加します。たとえば、a が

1 4 9 16

そしてbは

9 7 4 9 11

次に、マージは配列リストを返します

1 9 4 7 9 4 16 9 11


私が試したのは、i が偶数 (i%2==0) の場合は配列リスト a から、i が奇数。ただし、ある配列リストが他の配列リストよりも長くなる可能性があるという事実に対処する方法がわかりません。誰か助けてくれませんか?

編集:わかりました、ここにコードがあります(しかし、それは正しいとは言えません):

public static ArrayList<Integer> merge(ArrayList<Integer> een, ArrayList<Integer> twee)
{
    ArrayList<Integer> merged = new ArrayList<Integer>();

    for(int i = 0; i<100; i++)
    {           
        if(i%2!=0)
        {
            merged.add(a.get(i));
        }   
        if(i%2 == 0)
        {
            merged.add(b.get(i));
        }               
    }

    System.out.println(merged);
    return merged;
}
4

10 に答える 10

1

私は同じ状況にあり、以下が私の解決策でした:

// array list to hold the merged list
ArrayList<Integer> mergedList = new ArrayList<Integer>();

// Get the bigger size
int maxSize = listOne.size() > listTwo.size() ? listOne.size() : listTwo.size();

// Loop thru the list
for( int i = 0; i <= maxSize; i++){
    // We need to check first if index exist then just add it to mergeList
    if( i < listOne.size() ) mergedList.add( listOne.get( i ) );
    // We need to check first if index exist then just add it to mergeList
    if( i < listTwo.size() ) mergedList.add( listTwo.get( i ) );
}
于 2019-08-06T09:46:35.817 に答える
0

配列1= {1,2,3} 配列2= {a,b,c,d,e}

出力= {1、a、2、b、3、c、d、e}

public class MergeArray {

public static void main(String args[])
{
char [] arr1= {'1','2','3'};
char [] arr2= {'a','b','c','d','e'};


int l1= arr1.length;
int l2=arr2.length;

int l3=l1+l2;

char [] arr3=new char[l1+l2];

int i=0;
int j=0;
int k=0;
int m=0;
int r=0;

if(l1<l2)
    r=l1;
else
    r=l2;

while(m<r)
{
    arr3[k++]=arr1[i++];
    arr3[k++]=arr2[j++];
    m++;
}

while(k<l3)
{
    if(l1<l2)
        arr3[k++]=arr2[j++];
    else
        arr3[k++]=arr1[i++];
}

for(int n=0;n<l3;n++)
{
    System.out.print(arr3[n]+" ");
}

}

}

于 2016-06-05T08:35:13.733 に答える