0

私は試した:

List splice(List l1, List l2){
    List l3 = new LinkedList();
    return l3;
}

List append(List l1, List l2) {
    List to_return = copy(l1);
    List l3 = copy(l2);
    while (true) {
        if (l3.isEmpty())
            return to_return;
        to_return = append1(to_return,hd(l3));
        l3 = tl(l3);
    }
}

次に何をすべきですか?と を入力する[1,2,3][a,b]、 を取得したい[1,a,2,b,3]

4

1 に答える 1

1

私はあなたのコードを本当に理解していませんが、あなたは言います

[1,2,3]と[a,b]を入力すると、[1,a,2,b,3]が得られます。

これは次の方法で達成できます。

static <T> List<T> interleave(List<T> list1, List<T> list2) {
    List<T> newList = new ArrayList<T>();
    List<T> shortOne = list1.size() < list2.size() ? list1 : list2;
    List<T> longOne  = list1.size() < list2.size() ? list2 : list1;
    for (int i = 0; i < shortOne.size(); i++) {
        newList.add(list1.get(i));
        newList.add(list2.get(i));
    }
    for (int i = shortOne.size(); i < longOne.size(); i++) {
        newList.add(longOne.get(i));
    }
    return newList;
}

編集

使用しているList実装によっては、この投稿で受け入れられている回答のアプローチがより効率的である可能性があります: Java: Interleave two integer based arraylists -> good approach?

于 2013-02-12T20:06:07.167 に答える