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

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

遍歷包含兩個(gè)值的元素列表并僅匯總連接的值(Java)

遍歷包含兩個(gè)值的元素列表并僅匯總連接的值(Java)

動(dòng)漫人物 2022-06-30 19:09:12
我需要幫助解決以下問題。當(dāng)我有一個(gè)包含兩個(gè)值的元素列表時(shí),它表示橋的起點(diǎn)和終點(diǎn)。這些值代表“橋梁”。因此,例如 [0,1] 表示連接 island0 和 island1 的橋。我如何遍歷從 0 開始的列表,只總結(jié)連接的值而忽略其他值?示例 1 - 每個(gè)島都是間接連接的[0,1][1,2][2,3][3,4]解應(yīng)該是:0+1+2+3+4 = 10示例 2[0,1][1,2][3,4] !!! NOT CONNECTED解應(yīng)該是:0+1+2 = 3
查看完整描述

4 回答

?
繁花如伊

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

試試下面的。更改Bridge對(duì)象以滿足您的要求


public class Bridge {

    int start;

    int end;


    public Bridge(int start, int end) {

        this.start = start;

        this.end = end;

    }


    public int getStart() {

        return start;

    }


    public int getEnd() {

        return end;

    }

}

計(jì)算總和


import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


public class BridgeSum {

    public static void main(String... args) throws IOException {

        Bridge B1 = new Bridge(0, 1);

        Bridge B2 = new Bridge(1, 2);

        Bridge B3 = new Bridge(2, 4);

        Bridge B4 = new Bridge(4, 8);

        Bridge B5 = new Bridge(8, 9);


        List<Bridge> list = new ArrayList<>();

        list.add(B5);

        list.add(B2);

        list.add(B3);

        list.add(B1);

        list.add(B4);


        list.sort((a, b) -> a.getStart() > b.getStart() ? 0 : -1);


        int sum = 0;

        for (int i = 0; i < list.size(); i++) {

            if (i == 0) {

                sum = sum + list.get(i).getStart() + list.get(i).getEnd();

            } else {

                if (list.get(i).getStart() == list.get(i - 1).getEnd()) {

                    sum = sum + list.get(i).getEnd();

                } else {

                    break;

                }

            }

        }


        System.out.println(sum);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
墨色風(fēng)雨

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

有了一些限制,它可能很容易,沒有它可能會(huì)變得更復(fù)雜。有了約束,我的意思是第一座橋梁應(yīng)該是真相的來(lái)源。想想這些案例:


[0,1]

[1,2]

[3,4]

[4,5]

(內(nèi)部連接相同長(zhǎng)度的兩部分)


[0,1]

[1,2]

[3,4]

[4,5]

(第一個(gè)橋是排除的)


如果橋 1+2 已連接且 3+4 已連接但未將兩個(gè)部分連接在一起,會(huì)發(fā)生什么情況?我是說這個(gè)...


[0,1]

[2,3]

[3,4]

[4,5]

假設(shè)第一座橋是直通的來(lái)源,你可以試試這個(gè):


public class IslandConnector {

    private final List<Bridge> includedBridges = new ArrayList<>();

    private List<Bridge> excludedBridges;


    public IslandConnector(List<Bridge> bridges) {

        this.excludedBridges = new ArrayList<>();

        for(Bridge bridge : bridges) {

            if(includedBridges.isEmpty()) {

                includedBridges.add(bridge);

            }

            else {

                if(!tryIncludeBridge(bridge)) {

                    excludedBridges.add(bridge);

                }

            }           

        }

    }


    private boolean tryIncludeBridge(Bridge bridge) {

        for(Bridge includedBridge: includedBridges) {

            if(bridge.hasSameS(includedBridge)) {

                includeBridge(bridge);

                return true;

            }

        }


        return false;

    }


    private void includeBridge(Bridge bridge) {

        includedBridges.add(bridge);


        for(Bridge excludedBridge: excludedBridges) {

            if(bridge.hasSameS(excludedBridge)) {

                excludedBridges.remove(excludedBridge);

                includeBridge(excludedBridge);

            }

        }

    }


    public List<Bridge> getIncludedBridges() {

        return includedBridges;

    }


    public static void main(String... args) {

        System.out.println(new IslandConnector(Arrays.asList(

            new Bridge(0, 1),

            new Bridge(1, 2),

            new Bridge(2, 3),

            new Bridge(3, 4)

        )).getIncludedBridges());


        System.out.println(new IslandConnector(Arrays.asList(

            new Bridge(0, 1),

            new Bridge(1, 2),

            new Bridge(3, 4)

        )).getIncludedBridges());


        System.out.println(new IslandConnector(Arrays.asList(

            new Bridge(0, 1),

            new Bridge(2, 3),

            new Bridge(3, 4)

        )).getIncludedBridges());

    }

}

印刷


[[0,1], [1,2], [2,3], [3,4]]

[[0,1], [1,2]]

[[0,1]]


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
FFIVE

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

具有以下課程:


public class Graph<V> {

    private static class Edge<VV> {

        private final VV from;

        private final VV to;


        private Edge(VV from, VV to) {

            this.from = from;

            this.to = to;

        }

    }


    private final Set<V> vertices = new HashSet<>();

    private final Collection<Edge<V>> edges = new ArrayList<>();


    public void addEdge(V from, V to) {

        vertices.add(from);

        vertices.add(to);

        edges.add(new Edge(from, to));

    }



    public Set<V> closure(V start) {

        Set<V> result = new HashSet<>();

        closure(start, result);

        return result;

    }


    private void closure(V start, Set<V> seen) {

        if (vertices.contains(start) && !seen.contains(start)) {

            seen.add(start);

            for (Edge<V> e: edges) {

                if (start.equals(e.from)) {

                    closure(e.to, seen);

                }

            }

        }

    }

}

你可以這樣做:


    Graph<Integer> graph = new Graph<>();

    graph.addEdge(0,1);

    graph.addEdge(1,2);

    graph.addEdge(3,4);

    int sum = 0;

    for (int v: graph.closure(0)) {

        System.out.println("Vertex: " + v);

        sum += v;

    }

    System.out.println("Sum: " + sum);

使用以下輸出:


Vertex: 0

Vertex: 1

Vertex: 2

Sum: 3


查看完整回答
反對(duì) 回復(fù) 2022-06-30
?
MMTTMM

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

用 HashMap 試試這個(gè)解決方案


public class BridgeSolution {


    public static void main(String[] args) {


        Map<Integer, Integer> bridgeMap = new HashMap<>();


        List<Integer[]> bridges = new ArrayList<>();

        bridges.add(new Integer[]{0, 1});

        bridges.add(new Integer[]{1, 2});

        bridges.add(new Integer[]{2, 3});

        bridges.add(new Integer[]{3, 4});



        for (int i = 0; i < bridges.size(); i++) {

            bridgeMap.put(bridges.get(i)[0], bridges.get(i)[1]);

        }


        Integer start = bridges.get(0)[0];


        Integer value = null;

        Integer sum = start;

        while ((value = bridgeMap.get(start)) != null) {

            sum += value;

            start = value;

        }


        System.out.println(sum);

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-06-30
  • 4 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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