题解 | 牛群的喂养顺序

牛群的喂养顺序

https://www.nowcoder.com/practice/ce8860b6a8c74dfd8ccd15998970e447

  1. 典型拓扑
  2. 注意入度和建图即可。

import java.util.*;


public class Solution {
    public boolean canFeedAllCows (int numCows, int[][] feedOrders) {
        int[] inDegree = new int[numCows];
        boolean[][] graph = new boolean[numCows][numCows];
        for (int i = 0; i < feedOrders.length; ++i) {
            ++inDegree[feedOrders[i][0]];
            graph[feedOrders[i][1]][feedOrders[i][0]] = true;
        }

        Deque<Integer> q = new ArrayDeque<>();
        for (int i = 0; i < numCows; ++i) {
            if (inDegree[i] == 0) {
                q.addLast(i);
            }
        }

        int visitedCnt = 0;
        while (!q.isEmpty()) {
            final int u = q.removeFirst();
            visitedCnt++;
            for (int v = 0; v < numCows; ++v) {
                if (graph[u][v]) {
                    if (--inDegree[v] == 0) {
                        q.addLast(v);
                    }
                }
            }
        }

        return visitedCnt == numCows;
    }
}

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务