
数据结构与算法
文章平均质量分 94
数据结构与算法
whyCoding_
这个作者很懒,什么都没留下…
展开
-
常用数据结构——差分前缀和原理及常见用法详解(c++,python,附例题、代码)
给定整数 capacity 和一个数组 trips , trip[i] = [numPassengersi , fromi , toi] 表示第 i 次旅行有 numPassengersi 乘客,接他们和放他们的位置分别是 fromi 和 toi。给你一个整数数组 nums。一个子数组 [nums[l], nums[l+1], ..., nums[r-1], nums[r] 的和的绝对值为 abs(nums[l] + nums[l+1] + ... + nums[r-1] + nums[r])。原创 2025-02-19 10:27:23 · 780 阅读 · 0 评论 -
Prim — 求最小生成树(算法详解,图论,附例题、代码)
Prim算法用于解决最小生成树问题。生成树是可以视作一个无向、无环、带权的图(也可以说是树),任意两个节点有且仅有一条简单路径连接。最小生成树问题是,在一个复杂的、带环的图中找到一棵树,使这棵树包含所有的节点,并且权重之和最小。Prim算法的主要思想是贪心。我们将节点分为两个集合:已放入生成树(u)和未放入生成树中(v)中。每次将从集合 v 选中距离集合 u 最近的点,并不断更新。原创 2024-12-06 18:05:51 · 5504 阅读 · 0 评论 -
N皇后——经典回溯题型(c,c++)
回溯(backtracking)指的一种的暴力搜索式过程,其基本思想是:从一个根出发,遍历它的所有初始状态,再在此状态的前提下遍历其他所有第二个状态,这样不断向下延申,直至走到最后一个状态。遍历过程中,可以通过外界提供的条件进行,判断哪些状态可以继续递归下去,而哪些状态是无效的。回溯起始并不难,一开始遇到可能会有些晕头转向,但刷了几道题下来,你会发现他无非就是套模板:循环-更新状态-递归该状态-恢复现场。本文会已力扣的两道N皇后为例题,两道题起始都差不多,只不过在回溯点第二道比第一道处理的内容更多。原创 2024-12-01 20:17:54 · 702 阅读 · 0 评论 -
零钱兑换(Ⅱ)(完全背包)
给你一个整数数组coins表示不同面额的硬币,另给一个整数amount表示总金额。请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回0。假设每一种面额的硬币有无限个。题目数据保证结果符合 32 位带符号整数。4有四种方式可以凑成总金额:5=55=2+2+15=2+1+1+10只用面额 2 的硬币不能凑成总金额 3。1(题目来自Leetcode 518。原创 2024-10-13 20:48:33 · 701 阅读 · 2 评论 -
并查集(图论,附例题、代码)
并查集主要用于处理一些不相交的集合。有时候我们会得到一些元素,这些元素可能处于不同的集合,在相同的集合中有着较为复杂的联系。我们需要不断地查找某元素属于哪个集合。这类集合可以抽象地表示为查并集。引例:某比赛面向全国各大高校展开,每个学校需要派出3支队伍前往参赛。每支队伍中有一个队长、四名成员。队长负责与队员、学校比赛总指导老师做好对接,学校比赛总指导老师负责与队长、主办方做好对接。我们通过各个成员与队长、队长与指导老师的关系,便可以查到这些参赛者来自于哪个学校。原创 2024-10-27 16:56:54 · 1168 阅读 · 0 评论 -
Dijkstra—求最短路径(图论,附例题、代码)
在解决带权有向图的最短路径中,Dijkstra算法(迪杰斯特拉)用于解决单源有向图的最短路径问题。我们把一张有向图的起始称为源点,结束称为终点,最短路径就是从源点到终点所经历的最小权值之和。本文将介绍Dijkstra算法的原理和实用案例。PS.如果你是为了今天的每日一题来的,那么你找对地方了,因为本人也是特地来恶补的)Dijkstra算法的主要思想是贪心,每次将选中距离源点最近的点,并不断更新。原创 2024-11-25 16:47:52 · 8354 阅读 · 5 评论 -
鸡蛋掉落(动态规划)
给你k枚相同的鸡蛋,并可以使用一栋从第1层到第n层共有n层楼的建筑。已知存在楼层f,满足,任何从f的楼层落下的鸡蛋都会碎,从f楼层或比它低的楼层落下的鸡蛋都不会破。每次操作,你可以取一枚没有碎的鸡蛋并把它从任一楼层x扔下(满足如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中这枚鸡蛋。请你计算并返回要确定f的是多少?2鸡蛋从 1 楼掉落。如果它碎了,肯定能得出 f = 0。否则,鸡蛋从 2 楼掉落。如果它碎了,肯定能得出 f = 1。原创 2024-10-14 19:07:32 · 555 阅读 · 0 评论 -
冗余链接Ⅱ(c++,并查集,图论)
本题我是学习了b站up主 被殴打的AC机器 发布的视频。up主视频做的很好,思路也非常清晰,推荐给大家~原创 2024-10-28 17:22:52 · 901 阅读 · 0 评论 -
鸡蛋掉落-两枚鸡蛋(从记忆化搜索到动态规划)
给你的鸡蛋,和一栋从第1层到第n层共有n层楼的建筑。已知存在楼层f,满足,任何从f的楼层落下的鸡蛋都,从 f的楼层落下的鸡蛋都。每次操作,你可以取一枚的鸡蛋并把它从任一楼层x扔下(满足如果鸡蛋碎了,你就不能再次使用它。如果某枚鸡蛋扔下后没有摔碎,则可以在之后的操作中这枚鸡蛋。请你计算并返回要确定f的是多少?n = 22我们可以将第一枚鸡蛋从 1 楼扔下,然后将第二枚从 2 楼扔下。如果第一枚鸡蛋碎了,可知 f = 0;如果第二枚鸡蛋碎了,但第一枚没碎,可知 f = 1;原创 2024-10-13 17:52:00 · 1909 阅读 · 0 评论