二维数组的遍历使用foreach

二维数组的遍历使用foreach

 

public int numWays(int n, int[][] relation, int k) {
            ways = 0;
            this.n = n;
            this.k = k;
            edges = new ArrayList<>();
            //把关系处理成list,类似于图的每个节点能到达的节点的信息都存到list里
            for (int i = 0; i < n; i++) {
                edges.add(new ArrayList<>());
            }

            for (int[] edge : relation) {
                int src = edge[0];
                int dst = edge[1];
                edges.get(src).add(dst);

            }
            dfs(0, 0);
            return ways;
        }

        private void dfs(int index, int steps) {
            if (steps == k) {
                if (index == n - 1) {
                    ways++;
                }
                return;
            }

            List<Integer> list = edges.get(index);
            for (int nextIndex : list) {
                dfs(nextIndex, steps + 1);
            }

        }

 

posted @ 2021-07-06 20:54  小树木  阅读(495)  评论(0编辑  收藏  举报