第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

按組對列表進(jìn)行排序的效率如何?

按組對列表進(jìn)行排序的效率如何?

開心每一天1111 2022-05-21 17:22:49
我需要通過一些給定的“塊”或“組”元素對給定的排序列表進(jìn)行分組。例如:給定一個(gè)列表:[A, B, C, D, E, F, G, H, I, J]和團(tuán)體[A, C, D][F, E][J, H, I]結(jié)果應(yīng)該是[A, C, D, B, F, E, G, J, H, I]元素塊不能與非組元素混合。塊應(yīng)該具有相同的順序。列表的其他元素應(yīng)保持其順序。我已經(jīng)找到了解決方案。但這不是您將看到的最有效的代碼。我也在使用java 6 ...
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

從您提交的代碼中,我無法弄清楚您的算法是如何完全工作的。

我可以編寫另一個(gè)算法來完成這項(xiàng)任務(wù)。

  1. 標(biāo)記每個(gè)組的第一個(gè)元素

    [A,C,D] -> A
  2. list(to_be_sorted)從未標(biāo)記的組中的所有元素中刪除

    [A,C,D] -> remove [C,D]
  3. 對列表執(zhí)行排序

    result ([A,B,F,G,J])
  4. 根據(jù) Mark 放置移除的元素

Initial Sorted List [A,B,F,G,J]

A->add [C,D]

List is [A,C,D,B,F,G,J]

B->as it is

F->add [E]

List is [A,C,D,B,F,E,G,J]

G->as it is

J->add [H,I]

Final Sorted List [A,C,D,B,F,E,G,J,H,I]

時(shí)間復(fù)雜度與排序算法相同


查看完整回答
反對 回復(fù) 2022-05-21
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

根據(jù)您的定義,合并給定列表和“組”(數(shù)組)中的結(jié)果的條件并不完全清楚。但是,這是使用斷言根據(jù)您的要求的解決方案


“您希望列表的第一個(gè)元素不包含在組之間插入的任何組中......”


public class MergeArrays {


    private static final List<String> FIRST = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E", "F", "G", "H", "I", "J"));

    private static final List<String> SECOND = new ArrayList<>(Arrays.asList("A", "C", "D"));

    private static final List<String> THIRD = new ArrayList<>(Arrays.asList("F", "E"));

    private static final List<String> FOURTH = new ArrayList<>(Arrays.asList("J", "H", "I"));


    public static List<String> merge(List<String> source, List<String>... lists) {

        List<String> result = new ArrayList<>();

        for (List<String> list : lists) {

            for (String value : list) {

                source.remove(value);

            }

        }


        for (List<String> list : lists) {

            String value = null;

            if (source.size() > 0) {

                value = source.get(0);

                source.remove(0);

            }

            result.addAll(merge(value, list));

        }

        return result;

    }


    public static List<String> merge(String value, List<String> list) {

        List<String> result = new ArrayList<>(list);

        if (value != null) {

            result.add(value);

        }

        return result;

    }


    public static void main(String[] args) {

        List<String> result = merge(FIRST, SECOND, THIRD, FOURTH);

        System.out.println(result);

    }

}

//結(jié)果


[A, C, D, B, F, E, G, J, H, I]


查看完整回答
反對 回復(fù) 2022-05-21
  • 2 回答
  • 0 關(guān)注
  • 107 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號