C++ | Leetcode C++题解之第207题课程表

题目:

题解:

cpp 复制代码
class Solution {
private:
    vector<vector<int>> edges;
    vector<int> indeg;

public:
    bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
        edges.resize(numCourses);
        indeg.resize(numCourses);
        for (const auto& info: prerequisites) {
            edges[info[1]].push_back(info[0]);
            ++indeg[info[0]];
        }

        queue<int> q;
        for (int i = 0; i < numCourses; ++i) {
            if (indeg[i] == 0) {
                q.push(i);
            }
        }

        int visited = 0;
        while (!q.empty()) {
            ++visited;
            int u = q.front();
            q.pop();
            for (int v: edges[u]) {
                --indeg[v];
                if (indeg[v] == 0) {
                    q.push(v);
                }
            }
        }

        return visited == numCourses;
    }
};
相关推荐
Danica~22 分钟前
RpcChannel的调用过程
网络·c++·rpc
C_player_0011 小时前
C++ list的模拟实现
c++
孑渡1 小时前
【LeetCode】每日一题:跳跃游戏
python·算法·leetcode·游戏·职场和发展
liulanba1 小时前
leetcode--二叉树中的最长交错路径
linux·算法·leetcode
Puppet__1 小时前
【康复学习--LeetCode每日一题】3115. 质数的最大距离
学习·算法·leetcode
逸群不凡1 小时前
C++11|lambda语法与使用
开发语言·c++
DieSnowK2 小时前
[C++][CMake][CMake基础]详细讲解
开发语言·c++·makefile·make·cmake·新手向·详细讲解
Neituijunsir2 小时前
2024.06.28 校招 实习 内推 面经
c++·python·算法·面试·自动驾驶·汽车·求职招聘
xw-pp2 小时前
回溯法的小结与概述
java·数据结构·c++·python·算法·递归
每天努力进步!2 小时前
LeetCode热题100刷题6:160. 相交链表、206. 反转链表、234. 回文链表、141. 环形链表、142. 环形链表 II
c++·算法·leetcode·链表