首页
AI Coding
沸点
课程
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
算法
专业抄代码选手
创建于2024-07-08
订阅专栏
一些算法题目
暂无订阅
共216篇文章
创建于2024-07-08
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【leetcode】62. 不同路径
看图说话,到达红色方块的路径数是到达两个黄色方块路径之和,这个比较好理解,毕竟只能向右走,向下走。 由此可以推出转移方程代码: 然后初始化刚开始的状态就好
【leetcode】152. 乘积最大子数组
这一题比较典型的dp,也可以节约dp的过程,用中间变量即可。 数组中可能存在负数,负负得正这个问题要解决,所以不能一开始就舍弃负数,可以用一个临时变量来存放 dp解法,区分当前值的正负性,
【leetcode】908.最小差值 I
假设最大值max与最小值min之差为 diff diff <= 2k 的时候,那么 res = 0 diff > 2k 的时候,那么 res = diff - 2k
【leetcode】 14. 最长公共前缀
思路:取出第一个字符串来跟剩下的做对比,时间复杂度就是 O(nm),n为字符串数组strs的长度,m为第一个字符串的长度。 这里的indexOf也可以替换为 startWith
【leetcode】994. 腐烂的橘子
对于这种波及类型的题目,无非两种方案 1.DFS 2.BFS 这这一题里面,只能用BFS来解决,因为涉及到层次的问题,所以BFS是专用来解决这类题目的
【leetcode】300.最长递增子序列
动态规划解法(时间复杂度:O(n^2)) 使用一个数组 dp,其中 dp[i] 表示以 nums[i] 结尾的最长递增子序列的长度。 对于每一个 i,我们遍历之前的所有元素 j,如果 nums[j]
【leetcode】139. 单词拆分
这个问题可以用 动态规划 来解决。我们定义一个布尔数组 dp,其中 dp[i] 表示字符串前 i 个字符是否可以用字典中的单词拆分。 初始化:dp[0] = true,因为空字符串可以被认为是可以拆分
【leetcode】322. 零钱兑换
动态规划 这个问题可以通过 动态规划 来解决。我们定义 dp[i] 表示凑成金额 i 所需的最少硬币数,目标是找到 dp[amount]。 初始状态:dp[0] = 0,即凑成金额 0 需要 0 个硬
【leetcode】79. 完全平方数
动态规划 i - j * j尝试所有小于i的元素的完全平方数,dp[i - j * j] + 1来更新当前的次数 状态转移方程
【leetcode】198. 打家劫舍
动态规划 不能连续的抢劫两家,对于这里的状态转移方程就是 当前的这一家不抢 vs 抢劫当前这一家,选取一个最大值 dp题解 空间复杂度:O(n) 空间复杂度:O(1) 类似于斐不拉契数列,这里要维护一
【leetcode】 118. 杨辉三角
动态规划,比较简单的题目,可以一目了然上一轮的状态,然后推算出本次的状态 使用双重循环来生成每一行,并且每行第一个和最后一个元素都是 1,中间的元素通过上一行的元素相加得到。
【leetcode】188. 买卖股票的最佳时机 IV
动态规划 18行代码 dp[i][j] 表示在第 i 天时,最多允许 j 次交易,能获得的最大利润。 这里我们有两个选择: 不交易:即保持前一天的最大利润 dp[i-1][j],也就是今天不进行交易。
【leetcode】123. 买卖股票的最佳时机 III
可以买卖两次,两次股票的购买与出售不要交叉,必须买卖完一支,再进行另外一支 这道题的关键在于如何使用动态规划来记录两个交易的最大收益。为了做到这一点,可以维护四个变量,分别表示在某些状态下的最大收益:
【leetcode】122. 买卖股票的最佳时机 II
贪心算法 无限次买卖,计算出最大利润 时间复杂度: O(n),其中 n 是价格数组的长度,我们只需要遍历一次数组。 空间复杂度: O(1),只需要常数的额外空间。
【leetcode】121. 买卖股票的最佳时机
贪心算法 思路:记录下每次遍历的最小值,然后计算当前价格与最小值的差价即可,保存最大差价。 这里题没有多少技巧
【leetcode】817. 链表组件
将链表分成多少段,依据nums数组的元素来分,如果连续的链表元素存在于链表之中,那就是一段 这一题比较好解决,判断的时候直接判断当前节点current是否存在于nums中,以及current.next
【leetcode】2181. 合并零之间的节点
其实这一题新建一个链表比较方便,直接在原链表上面操作比较麻烦 遇到不是0的节点,用临时元素sum来进行累加,然后遇到0节点直接新建一个节点即可,然后进行衔接
【leetcode】739. 每日温度
单调栈解法 这是这道题最常用的解法,利用栈来帮助追踪温度变化。 算法思路: 使用栈存储温度的下标。当遇到比栈顶温度高的元素时,弹出栈顶,计算两个下标的差值即为等待的天数。 栈内保持从栈底到栈顶递减的顺
【leetcode】155. 最小栈
使用一个minStack来维护最小值,在push的时候,来看下minStack的栈顶元素和需要push进来的元素val大小关系,如果需要push进来的value <= 栈顶元素,那就push进入到mi
【leetcode】20. 有效的括号
典型的用stack来解决的题目,同时可以看下22题 用 栈 来解决这个问题,因为栈遵循 后进先出 的原则,非常适合处理括号匹配问题。当遇到左括号时,将其压入栈中;当遇到右括号时,检查栈顶是否是相应的左
下一页