数据结构与算法
王糍粑的小夕
这个作者很懒,什么都没留下…
展开
-
数据结构与算法-动态规划-完全平方数
是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。的完全平方数的最少数量。原创 2024-07-15 10:28:32 · 92 阅读 · 0 评论 -
数据结构与算法-动态规划-三角形最小路径和
f[i][j] 只与 f[i−1][…] 有关,而与 f[i−2][…] 及之前的状态无关,因此我们不必存储这些无关的状态。具体地,我们使用两个长度为 n 的一维数组进行转移,将 i 根据奇偶性映射到其中一个一维数组,那么 i−1 就映射到了另一个一维数组。这样我们使用这两个一维数组,交替地进行状态转移。也就是说,如果正位于当前行的下标。每一步只能移动到下一行中相邻的结点上。,那么下一步可以移动到下一行的下标。,找出自顶向下的最小路径和。可以将空间复杂度优化至。原创 2024-07-10 10:09:42 · 326 阅读 · 0 评论 -
数据结构与算法-动态规划-不同路径 II
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格的左上角 (起始点在下图中标记为 “Start” )。网格中的障碍物和空位置分别用。原创 2024-07-09 13:36:43 · 116 阅读 · 0 评论 -
数据结构与算法-动态规划-删除并获得点数
根据题意,在选择了元素 x 后,该元素以及所有等于 x−1 或 x+1 的元素会从数组中删去。若还有多个值为 x 的元素,由于所有等于 x−1 或 x+1 的元素已经被删除,我们可以直接删除 x 并获得其点数。因此若选择了 x,所有等于 x 的元素也应一同被选择,以尽可能多地获得点数。记元素 x 在数组中出现的次数为 c,我们可以用一个数组 sum 记录数组 nums 中所有相同元素之和,即 sum[x]=x⋅c。若选择了 x,则可以获取 sum[x] 的点数,且无法再选择 x−1 和 x+1。原创 2024-07-05 11:33:43 · 471 阅读 · 0 评论 -
数据结构与算法-动态规划-打家劫舍
思路:不能连续偷两个房间,用dp[n]存储偷到每个房间的金额, 所以当偷到第i个房间时,可以选择偷或不偷,dp[i] = Math.max(dp[i-1],dp[i-2]+ nums[i] )你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,给定一个代表每个房屋存放金额的非负整数数组,计算你。,一夜之内能够偷窃到的最高金额。原创 2024-07-05 11:32:58 · 160 阅读 · 0 评论 -
数据结构与算法-动态规划-使用最小花费爬楼梯
个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。请你计算并返回达到楼梯顶部的最低花费。原创 2024-07-04 10:26:18 · 141 阅读 · 0 评论 -
数据结构与算法-动态规划-最长回文子串
给你一个字符串s,找到s中最长的回文子串。原创 2024-07-03 10:53:47 · 377 阅读 · 0 评论 -
数据结构与算法-字符串-无重复字符的最长子串
在上面的流程中,我们还需要使用一种数据结构来判断 是否有重复的字符,常用的数据结构为哈希集合(即 C++ 中的 std::unordered_set,Java 中的 HashSet,Python 中的 set, JavaScript 中的 Set)。在每一步的操作中,我们会将左指针向右移动一格,表示 我们开始枚举下一个字符作为起始位置,然后我们可以不断地向右移动右指针,但需要保证这两个指针对应的子串中没有重复的字符。在移动结束后,这个子串就对应着 以左指针开始的,不包含重复字符的最长子串。原创 2024-07-02 11:02:09 · 311 阅读 · 0 评论 -
数据结构与算法-链表-两数相加
思路:注意点:1. 要考虑进位,2. 两个链表的长度不一定相等。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。的链表,表示两个非负的整数。它们每位数字都是按照。请你将两个数相加,并以相同形式返回一个表示和的链表。的方式存储的,并且每个节点只能存储。原创 2024-07-01 09:42:12 · 203 阅读 · 0 评论 -
数据结构与算法-二叉树-二叉树的所有路径
返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。原创 2024-01-30 08:51:34 · 449 阅读 · 1 评论 -
数据结构与算法-二叉树-路径总和lll
路径总和lll给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。代码:/** * Definition for a bina原创 2024-01-26 15:33:24 · 375 阅读 · 0 评论 -
数据结构与算法-二叉树-路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。思路:深度优先遍历,递归回溯。这里要用到双端队列Deque。叶子节点 是指没有子节点的节点。原创 2024-01-25 10:32:41 · 385 阅读 · 0 评论 -
数据结构与算法-二叉树-路径总和
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。如果存在,返回 true;否则,返回 false。叶子节点 是指没有子节点的节点。原创 2024-01-24 09:02:17 · 352 阅读 · 0 评论 -
数据结构与算法-二叉树-从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。思路:与从前序与中序遍历构造二叉树基本一直,只不过后序遍历中的头节点在最后面。原创 2024-01-22 09:15:25 · 325 阅读 · 0 评论 -
数据结构与算法-二叉树-从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。前序遍历preorder的第一个元素3是根节点,在中序遍历inorder中,3的左边的左子树,3的右边为右子树。原创 2024-01-19 09:57:09 · 573 阅读 · 0 评论 -
数据结构与算法-二叉树-层次遍历II
思路:这道题与上一道题是一样的,只不过在列表中的顺序是相反的。刚开始的思路想着把List反转,或者是先放到栈里面,然后在遍历出来。看了答案后又更简单的方法,就是用LinkedList,每次遍历完一层的时候,直接用LinkedList.add(0,List) 插入,这样可以在将List插入到头位置。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)原创 2024-01-18 09:30:36 · 370 阅读 · 0 评论 -
数据结构与算法-二叉树-层次遍历I
思路:提到层次遍历,首先想到的就是用队列,首先将头节点放入队列中,然后出队,将出队节点的左节点和右节点分别入队,一直重复该操作,直到队列为空。但是该题要求输出要求每一层放到一个List中,所以需要在原有基础上,做一些调整。通过获取队列的大小,来判断哪些节点是在同一层。我最开始想到的思路就是在每一层结束的时候添加一个标记位,来表示该层的结束。个人觉得没什么问题,但是最终力扣判定超时。(即逐层地,从左到右访问所有节点)。原创 2024-01-17 09:37:37 · 509 阅读 · 0 评论 -
数据结构与算法-二叉树-后序遍历
给你一棵二叉树的根节点root,返回其节点值的。原创 2024-01-16 10:07:14 · 353 阅读 · 0 评论 -
数据结构与算法-二叉树-中序遍历
给定一个二叉树的根节点root,返回它的遍历。原创 2024-01-15 09:43:03 · 403 阅读 · 0 评论 -
数据结构与算法-二叉树-前序遍历
题目:给你二叉树的根节点root,返回它节点值的**遍历。思路:前序遍历:根-左-右。原创 2024-01-11 09:25:20 · 370 阅读 · 0 评论 -
数据结构与算法-栈-移掉K位数字
*位数字,使得剩下的数字最小。请你以字符串形式返回这个最小的数字。给你一个以字符串表示的非负整数。原创 2024-01-09 10:00:00 · 368 阅读 · 0 评论 -
数据结构与算法-队列-用两个栈实现队列
1.如果 stackPush 要往 stackPop 中压入数据,那么必须一次性把 stackPush 中的数据全部压入。2.如果 stackPop 不为空,stackPush 绝对不能向 stackPop 中压入数据。请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(原创 2024-01-08 09:30:20 · 375 阅读 · 0 评论 -
数据结构与算法-动态规划-地下城游戏
*注意:**任何房间都可能对骑士的健康点数造成威胁,也可能增加骑士的健康点数,包括骑士进入的左上角房间以及公主被监禁的右下角房间。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为。其他房间要么是空的(房间里的值为。的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。个房间组成的二维网格。),要么包含增加骑士健康点数的魔法球(若房间里的值为。返回确保骑士能够拯救到公主所需的最低初始健康点数。原创 2023-12-20 10:34:18 · 420 阅读 · 0 评论 -
数据结构与算法-动态规划-最长公共子序列
*是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。是这两个字符串所共同拥有的子序列。,返回这两个字符串的最长。原创 2023-12-15 11:13:31 · 46 阅读 · 0 评论 -
数据结构与算法-动态规划- 最长递增子序列
是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。,找到其中最长严格递增子序列的长度。原创 2023-12-14 09:53:31 · 46 阅读 · 0 评论 -
数据结构与算法-动态规划-买卖股票的最佳时机
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回。设计一个算法来计算你所能获取的最大利润。买入这只股票,并选择在。原创 2023-12-13 11:45:12 · 47 阅读 · 0 评论 -
数据结构与算法-动态规划-换钱的方法数
组成 15 元的方法有 6 种,分别为 3 张 5 元、1 张 10 元+1 张 5 元、1 张 10 元+5 张 1 元、10。张 1 元+1 张 5 元、2 张 5 元+5 张 1 元和 15 张 1 元。给定数组 arr,arr 中所有的值都为正数且不重复。每个值代表一种面值的货币,每种面值。的货币可以使用任意张,再给定一个整数 aim,代表要找的钱数,求换钱有多少种方法。组成 0 元的方法有 1 种,就是所有面值的货币都不用。任何方法都无法组成 2 元。原创 2023-12-12 17:18:23 · 38 阅读 · 0 评论 -
数据结构与算法-动态规划-机器人达到指定位置方法数
上面的参数代表所有位置为 1 2 3 4 5。机器人最开始在 2 位置上,必须经过 3 步,最后到。所谓无后效性是指是指一个递归状态的返回值与怎么到达这个状态的路径无关。上面的参数代表所有位置为 1 2 3。机器人最开始在 1 位置上,必须经过 3 步,最后到达 3。中的一个),机器人可以往左走或者往右走,如果机器人来到 1 位置,1)从 2 到 1,从 1 到 2,从 2 到 3。2)从 2 到 3,从 3 到 2,从 2 到 3。3)从 2 到 3,从 3 到 4,从 4 到 3。所以返回方法数 3。原创 2023-12-11 15:01:17 · 276 阅读 · 0 评论 -
数据结构与算法-动态规划-最小路径和
请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。给定一个包含非负整数的 *原创 2023-12-10 12:30:19 · 24 阅读 · 0 评论 -
数据结构与算法-动态规划-不同路径
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。**网格的左上角 (起始点在下图中标记为 “Start” )。问总共有多少条不同的路径?原创 2023-12-09 13:54:27 · 20 阅读 · 0 评论 -
数据结构与算法-动态规划-出租车的最大盈利
*注意:**你可以在一个地点放下一位乘客,并在同一个地点接上另一位乘客。,通过接乘客订单盈利。你只能沿着编号递增的方向前进,不能改变方向。,请你返回在最优接单方案下,你能盈利。你驾驶出租车行驶在一条有。个地点从近到远编号为。乘客信息用一个下标从。原创 2023-12-08 11:03:22 · 228 阅读 · 0 评论 -
数据结构与算法-回溯-目标和
返回可以通过上述方法构造的、运算结果等于。,然后串联起所有整数,可以构造一个。向数组中的每个整数前添加。给你一个非负整数数组。原创 2023-12-07 10:23:25 · 18 阅读 · 0 评论 -
数据结构与算法-回溯-组合总和 III
该列表不能包含相同的组合两次,组合可以以任何顺序返回。所有可能的有效组合的列表。原创 2023-12-06 09:02:07 · 38 阅读 · 0 评论 -
数据结构与算法-回溯-递增子序列
数组中可能含有重复元素,如出现两个整数相等,也可以视作递增序列的一种特殊情况。,找出并返回所有该数组中不同的递增子序列,递增子序列中。原创 2023-12-05 09:19:39 · 25 阅读 · 0 评论 -
数据结构与算法-回溯-火柴拼正方形
任何一根火柴棒,但你可以把它们连在一起,而且每根火柴棒必须。如果你能使这个正方形,则返回。你将得到一个整数数组。原创 2023-12-04 10:25:28 · 27 阅读 · 0 评论 -
数据结构与算法-回溯-黄金矿工
每个单元格中的整数就表示这一单元格中的黄金数量;如果该单元格是空的,那么就是。你要开发一座金矿,地质勘测学家已经探明了这座金矿中的资源分布,并用大小为。原创 2023-12-02 20:21:29 · 25 阅读 · 0 评论 -
数据结构与算法-回溯-子集 II
其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。思路:对于包含重复元素的题,要先排序,每个元素。返回的解集中,子集可以按。添加到 path 之前,判断一下。原创 2023-12-01 09:38:56 · 39 阅读 · 0 评论 -
数据结构与算法-回溯-全排列 II
给定一个可包含重复数字的序列。返回所有不重复的全排列。原创 2023-11-30 10:40:59 · 65 阅读 · 0 评论 -
数据结构与算法-回溯-组合总和 II
*注意:**解集不能包含重复的组合。中的每个数字在每个组合中只能使用。给定一个候选人编号的集合。中所有可以使数字和为。原创 2023-11-29 10:07:58 · 43 阅读 · 0 评论 -
数据结构与算法-回溯-分割回文串
*分割成一些子串,使每个子串都是。是正着读和反着读都一样的字符串。所有可能的分割方案。原创 2023-11-28 14:24:46 · 26 阅读 · 0 评论