
每日一题
abutu999
这个作者很懒,什么都没留下…
展开
-
【贪心算法】跳跃游戏
给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回 true;否则,返回 false。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0 到达下标 1, 然后再从下标 1 跳 3 步到达最后一个下标。示例 2:输入:nums = [3,2,1,0,4]输出:false解释:无论怎样,总会到达下标为 3 的位置。原创 2024-05-16 11:07:31 · 220 阅读 · 1 评论 -
【算法】组合回溯专题
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。为了去重,需使用idx来约束每轮的终点有了 4 3 2 后就不能出现 2 3 4。原创 2024-04-24 19:21:41 · 318 阅读 · 0 评论 -
【数据结构】两两交换链表 && 复制带随机指针的链表
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。原创 2024-04-11 10:44:57 · 468 阅读 · 0 评论 -
【数据结构与算法】二分图的最大匹配
给定一个二分图,其中左半部包含 n1 个点(编号 1∼n1),右半部包含 n2 个点(编号 1∼n2),二分图共包含 m 条边。数据保证任意一条边的两个端点都不可能在同一部分中。请你求出二分图的最大匹配数。二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于同一个顶点,则称 M 是一个匹配。二分图的最大匹配:所有匹配中包含边数最多的一组匹配被称为二分图的最大匹配,其边数即为最大匹配数。输入格式第一行包含三个整数 n1、 n2 和 m。原创 2024-03-28 21:27:34 · 358 阅读 · 0 评论 -
【每日一题】盛水容器
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2024-03-28 20:26:23 · 202 阅读 · 0 评论 -
【数据结构与算法】用染色法判定二分图
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。请你判断这个图是否是二分图。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 u 和 v,表示点 u 和点 v 之间存在一条边。输出格式如果给定图是二分图,则输出 Yes,否则输出 No。原创 2024-03-26 21:48:47 · 247 阅读 · 0 评论 -
【数据结构与算法】Kruskal最小生成树
【代码】【数据结构与算法】Kruskal最小生成树。原创 2024-03-24 17:12:30 · 192 阅读 · 0 评论 -
【数据结构与算法】spfa判断是否存在负环
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你判断图中是否存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式如果图中存在负权回路,则输出 Yes,否则输出 No。数据范围1≤n≤2000,1≤m≤10000,图中涉及边长绝对值均不超过 10000。原创 2024-03-20 16:44:34 · 212 阅读 · 0 评论 -
【数据结构与算法】求带负权值的最短路径——spfa方法
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环, 边权可能为负数。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 impossible。数据保证不存在负权回路。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 impossible。原创 2024-03-20 16:11:04 · 607 阅读 · 0 评论 -
【Dijkstra算法】求图的最短路
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。输入格式第一行包含整数 n 和 m。接下来 m 行每行包含三个整数 x,y,z,表示存在一条从点 x 到点 y 的有向边,边长为 z。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。如果路径不存在,则输出 −1。原创 2024-03-18 20:49:50 · 357 阅读 · 0 评论 -
【BFS】计算图中点的层次
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。所有边的长度都是 1,点的编号为 1∼n。请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。输入格式第一行包含两个整数 n 和 m。接下来 m 行,每行包含两个整数 a 和 b,表示存在一条从 a 走到 b 的长度为 1 的边。输出格式输出一个整数,表示 1 号点到 n 号点的最短距离。原创 2024-03-18 19:36:04 · 265 阅读 · 0 评论 -
【DFS】树的重心
存储方式。原创 2024-03-18 19:00:31 · 443 阅读 · 0 评论 -
【BFS】走迷宫问题——acwing844
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。输入格式第一行包含两个整数 n 和 m。接下来 n 行,每行包含 m 个整数(0 或 1),表示完整的二维数组迷宫。原创 2024-03-16 17:03:18 · 320 阅读 · 0 评论 -
【DFS算法】排列数字——acwing 842
给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数 n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7。原创 2024-03-15 21:07:41 · 438 阅读 · 0 评论 -
【算法】并查集
用于查找一个数字的祖宗数字比如 初始时,每个数字的祖宗是自己 find(i) = i若 要把 3 和 4 合并 则把3的祖宗设置为4 此时 p(find(3)) = 4若 要把 5 和 3 合并, 则先找到5和3的祖宗, 再把5的祖宗设置为3的祖宗每次合并集合时只需要更改祖宗元素即可。原创 2024-03-09 21:14:28 · 319 阅读 · 0 评论 -
【每日一题】3.4 合并区间
给定 n个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3]和 [2,6]可以合并为一个区间 [1,6]。输入格式第一行包含整数 n。接下来 n行,每行包含两个整数 l和 r。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。原创 2024-03-04 18:28:45 · 254 阅读 · 0 评论 -
【acwing】前缀与差分
输入一个长度为 n的整数序列。接下来再输入 m个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。输入格式第一行包含两个整数 n和 m。第二行包含 n个整数,表示整数数列。接下来 m行,每行包含两个整数 l和 r,表示一个询问的区间范围。输出格式共 m行,每行输出一个询问的结果。原创 2024-03-04 17:04:44 · 265 阅读 · 0 评论 -
【每日一题】3.2 求逆序对
给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 i个和第 j个元素,如果满足 i<j 且 a[i]>a[j],则其为一个逆序对;否则不是。输入格式第一行包含整数 n,表示数列的长度。第二行包含 n个整数,表示整个数列。输出格式输出一个整数,表示逆序对的个数。数据范围 1≤n≤100000,数列中的元素的取值范围 [1,109]。输入样例:6输出样例:5。原创 2024-03-02 20:17:19 · 286 阅读 · 0 评论 -
【每日一题】2.28 由前序遍历和中序遍历确定后序遍历
假定一棵二叉树的每个结点都用一个大写字母描述。给定这棵二叉树的前序遍历和中序遍历,求其后序遍历。输入格式输入包含多组测试数据。每组数据占两行,每行包含一个大写字母构成的字符串,第一行表示二叉树的前序遍历,第二行表示二叉树的中序遍历。输出格式每组数据输出一行,一个字符串,表示二叉树的后序遍历。数据范围输入字符串的长度均不超过 26输入样例:ABCBACFDXEAGXDEFAG输出样例:BCAXEDGAF。原创 2024-02-28 20:19:04 · 261 阅读 · 0 评论 -
【每日一题】06 排序链表
给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表。原创 2024-02-16 23:51:16 · 730 阅读 · 0 评论 -
【 每日一题】05 三角形最小路径和(DP4)
给定一个三角形 triangle ,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。也就是说,如果正位于当前行的下标 i ,那么下一步可以移动到下一行的下标 i 或 i + 1。示例 1:输入:triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]输出:11解释:如下面简图所示:23 46 5 74 1 8 3。原创 2024-02-14 19:58:37 · 355 阅读 · 0 评论 -
【每日一题】04最小路径和 (DP3)
给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid = [[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径 1→3→1→1→1 的总和最小。原创 2024-02-11 15:26:05 · 256 阅读 · 1 评论 -
【每日一题】03 不同路径Ⅱ(DP2)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]输出:2解释:3x3 网格的正中间有一个障碍物。原创 2024-02-08 14:23:21 · 169 阅读 · 0 评论 -
【每日一题】02 不同路径(DP1)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 :输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。原创 2024-02-07 20:22:11 · 200 阅读 · 1 评论 -
【每日一题】01 二进制求和
给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。示例 1:输入:a = “11”, b = “1”输出:“100”示例 2:输入:a = “1010”, b = “1011”输出:“10101”原创 2024-02-07 19:36:16 · 308 阅读 · 1 评论