LeetCode Daily challenge - Course Schedule
文章目录
- 题目大意
- 输入
- 思路
- 代码
- 总结
题目大意
给出n个课程,以及某些课程的预置课程,某课程的预置课程表示必须先参加预置课程后才能再参加该课程。判断是否可以完成所有的课程。
输入
n表示课程数,列表表示课程的预置课程:numCourses = 2, prerequisites = [[1,0]]
。
思路
可以抽象为有向图是否有环的问题,而该问题有两种解决方法:
深度优先搜索判断
搜索过程若遇到了之前访问过的节点则表示有环
利用每个节点的入度判断
将所有入度为0的节点加入队列,对队列每个节点,删除从其出发的所有边,更新节点的入度,将新的入度为0的节点加入队列,直到发现 节点入度小于0 或者循环结束后 依旧存在入度不为0的节点。
代码
第二种方法的代码。
typedef vector<vector<int>> vvi;
class Solution {public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {if (numCourses <= 1) return true;vector<int> indegrees(numCourses, 0);vector<vector<int>> graph(numCourses);for (auto tmpvec: prerequisites){graph[tmpvec[1]].push_back(tmpvec[0]);indegrees[tmpvec[0]]++;}queue<int> q;for (int i = 0; i < numCourses; i++) if (indegrees[i] == 0) q.push(i);if (q.empty() && numCourses > 1) return false;while(!q.empty()) {int u = q.front();q.pop();for (int child: graph[u]) {indegrees[child]--;if (indegrees[child] == 0) q.push(child);else if (indegrees[child] < 0) return false;}}for (int i = 0; i < numCourses; i++)if (indegrees[i] != 0)return false;return true;}
};
总结
经典题目。
LeetCode Daily challenge - Course Schedule相关推荐
- LeetCode Daily challenge - K Closest Points to Origin
文章目录 题目大意 思路 代码 总结 题目大意 找前K小元素,只不过元素是二维的坐标 思路 很容易想到排序后取前K个,虽然可以但是速度不够快.实际上类似于找第K大(小),可以用划分的方法找,每次随机划 ...
- Leetcode May Challenge - 05/07: Cousins in Binary Tree(Python)
题目描述 In a binary tree, the root node is at depth 0, and children of each depth k node are at depth k ...
- leetcode 446. Arithmetic Slices II - Subsequence | 446. 等差数列划分 II - 子序列(动态规划)
题目 https://leetcode.com/problems/arithmetic-slices-ii-subsequence/ 题解 找等差子数列,详见注释. 一个月前做过,没通过,今天 dai ...
- 消除SQL Server中重要维护任务的风险
As database professionals, we are often in very close proximity to important processes, data, and ap ...
- taoqick 搜索自己CSDN博客
L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...
- 插图 引用 同一行两个插图_为什么插图是产品的重要组成部分
插图 引用 同一行两个插图 "Hi, my name is Ludmila and I'm a UX/UI designer" "嗨,我叫Ludmila,我是UX / U ...
- 【英语】Invest in Yourself
See whatever you're doing-. However you spend your time.. That tells you who you are, so think about ...
- 看博客学学Android(二十一)
原文地址: Day 19: Daily Challenge and Missions Daily challenge is to collect 5 letter which fly like pow ...
- Elasticsearch - 压测方案之 esrally 简介
文章目录 为什么要压测? 如何进行压测? 入门 简介 快速入门 相关术语 track car race Tournament Pipeline 压测流程 压测结果分析 实战 问题一 问题二 问题三 进 ...
最新文章
- 【平行驾驶】王飞跃 | 人工智能与智能汽车:在CPSS中驶向第三轴心时代
- 基于uPC1677C射频功率放大
- cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
- MySQL8.0.16主从同步
- linux修改rm指令执行(数据安全)
- 需求分析与系统设计读书笔记之五
- speedoffice(PPT)插入的表格怎么合并单元格呢
- 2019 ngChina 开发者大会 - 工作坊系列:RxJS,Angular,和全栈开发
- 收藏:学做美食--欢乐年夜饭之神七年糕火焰虾
- debian系统服务器读不出来,Debian10局域网服务器使用踩坑笔记
- Rimworld Mod制作教程2 创建数据定义
- 部分主元法求解线性方程组
- iOS 数据持久化方式 - 归档 反归档
- 单调递增最长子序列 拦截导弹(nyoj 17 nyoj 79)
- crm登录功能实现记住我
- Social Justice Awards秋季赛正式启动
- 发送邮件常见出错代码
- 批量将EXCEL转为PDF
- 如何下载、配置C++
- 剖根问底:Java 不能实现真正泛型的原因是什么?
热门文章
- 【哈工大SCIR笔记】机器阅读理解简述
- Macbook Pro(M1芯片)腾讯会议无法使用共享屏幕功能
- 乐高大颗粒作品19:端午节做一个粽子
- 实战 —— 生存唯一随机数
- 电脑配置之CPU性能参数[一]
- [LeetCode javaScript] 881. 救生艇
- 调用科大讯飞语音合成离线SDK的基础上调用pyqt5模块编写gui界面
- NLP算法之一(朴素贝叶斯理论部分)
- 用python画篮球场_如何使用 Python 创建一个 NBA 得分图?
- 7. 【containerd】连接远程containerd问题