博主头像
HailinCode

Full-Stack Developer

分类 算法 下的文章

算法

力扣 2115 从给定原材料中找到所有可以做出的菜

题目描述给定一个字符串数组 recipes(食谱)、一个二维字符串数组 ingredients(每个食谱所需的食材列表)以及一个字符串数组 supplies(当前拥有的所有食材)。每道菜做好后也可以作为其他菜的食材。返回所有可以做出的食谱列表。解题方法思路分析本题的核心在于处理食谱与食材之间的依赖关系。一道菜依赖若干种食材,而做好的菜又可以作为其他菜的食材,这种"前置条件满足后才能解锁"的特性决定

算法

力扣 210. 课程表 II

题目描述现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites,其中 prerequisites[i] = [ai, bi],表示在选修课程 ai 前必须先选修 bi。请你返回一个可以修完所有课程的学习顺序。如果不可能完成所有课程(即存在环),返回一个空数组。解题方法:拓扑排序(Kahn 算法)本题是经典的拓扑排序问题。

算法

力扣 1391. 检查网格中是否存在有效路径

解题思路本题要求判断能否从网格左上角 (0, 0) 走到右下角 (m-1, n-1),其中每个格子代表一种街道类型(1~6),每种街道只允许特定方向通行。核心思想是使用 BFS(广度优先搜索) 遍历所有可达位置,并在移动时验证 双向连通性:即当前格子允许通往下一格,且下一格也允许从当前格进入。代码解析class Solution: def hasValidPath(self, grid:

算法

最优分组

问题描述小蓝开了一家宠物店,最近有一种 X 病毒在动物之间进行传染,小蓝为了以防万一打算购买测试剂对自己的宠物进行病毒感染测试。为了减少使用的测试剂数目,小蓝想到了一个好方法:将 N 个宠物平均分为若干组,使得每组恰好有 K 只宠物,这样对同一组的宠物进行采样并混合后用一个试剂进行检测,如果测试结果为阴性则说明组内宠物都未感染 X 病毒;如果是阳性的话则需要对组内所有 K 只宠物单独检测,需要再消

算法

商人随从过河问题

商人们怎样安全过河问题(智力游戏)随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货。乘船渡河的方案由商人决定。商人们怎样才能安全过河?已知条件3名商人3名随从小船至多可载2人两岸均需满足:随从人数 ≤ 商人人数(若某岸商人人数为0,则随从人数可任意)问题分析这是一个多步决策过程:决策:每一步(此岸到彼岸或彼岸到此岸)船上的人员。要求:在安全的前提下(两岸的随从数不比商人多),经有限步使