
动态规划
文章平均质量分 54
打不死的小刘
做个笔记并分享思路
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 198.打家劫舍(动态规划,滚动数组思想优化)
目录 题目描述: 动态规划: 滚动数组优化: 题目描述: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 示例 1: 输入:[1,2,3,1] 输出:4 解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 ..原创 2021-08-16 10:20:16 · 259 阅读 · 0 评论 -
LeetCode 62.不同路径(动态规划)
题目描述: 从m×n网格的左上角到网格的右下角(只能向右或向下),求总共有多少条路径。 状态: 以左上角的坐标为(1,1),右下角的坐标为(n,m),m行n列,自行理解坐标。 定义dp[i][j]表示为到达坐标为(i,j)的路径数。 初始值: 因为只能向右或向下移动,所以第一行的网格只能由开始一直往右到达,即dp[i>=1][1]=1。 同理,第一列的网格只能由开始一直向下移动到达,所以dp[1][j>=1]=1。 状态转移方程: 除了第一行和第一列之外,其它的网格可以由上一次原创 2021-08-13 19:20:42 · 261 阅读 · 0 评论 -
LeetCode 1025.除数博弈(动态规划)
题目描述: 爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。 最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作: 选出任一x,满足0 < x < N 且N % x == 0。 用 N - x替换黑板上的数字 N 。 如果玩家无法执行这些操作,就会输掉游戏。 只有在爱丽丝在游戏中取得胜利时才返回True,否则返回 False。假设两个玩家都以最佳状态参与游戏。 状态:用dp[i]表示当前数字i的时候先手是必胜状态还是必败状态。 思路:只要爱丽丝先手...原创 2021-08-12 10:56:18 · 244 阅读 · 0 评论 -
LeetCode 392.判断子序列(动态规划、双指针)
题目描述: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。 简单来说,t字符串包含s字符串中的所有字符,且顺序相同。 1.双指针法: 思路:定义两个变量指针,lens、lent,分别从s、t的开头一直往后遍历 第一种情况:如果s[lens]==t[lent],表示s[lens]之前的字符都可以在t字符串中顺序出现,接着原创 2021-08-11 10:52:57 · 210 阅读 · 0 评论 -
LeetCode 122.买股票的最佳时机Ⅱ(贪心,动态规划)
题目描述: 给定一个数组prices,prices[i]表示在第i天股票的价格,可以通过在较低点购买、较高点售出股票来获得利益,但是必须在再次购买前出售掉之前的股票。 贪心: 思路:只要当天的股票价格比后一天股票的价格低,就在当天买入,后一天售出,遍历所有的天数,把所有符合的赚的钱相加,就是最大利润。 代码: class Solution { public: int maxProfit(vector<int>& prices) { int profit原创 2021-08-09 12:29:17 · 139 阅读 · 0 评论 -
LeetCode 53.最大子序列和(贪心、动态规划实现)
题目描述如下: 给定一个整数数组 nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例 1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组[4,-1,2,1] 的和最大,为6 。 示例 2: 输入:nums = [1] 输出:1 示例 3: 输入:nums = [0] 输出:0 示例 4: 输入:nums = [-1] 输出:-1 示例 5: 输入:nums = [-100000] 输出:-1000...原创 2021-08-06 12:02:51 · 284 阅读 · 0 评论 -
LeetCode 70.爬楼梯(递归、动态规划,滚动数组思想实现)
题目描述:有n阶楼梯,每次可以爬1或者2阶,问爬完n阶楼梯共有几种方案。 1.递归: 思路:假设现在在第x阶楼梯,他可以在x-1阶楼梯时再爬1阶到达x阶,也可以在x-2阶楼梯时再爬2阶到达x阶,设爬到x阶楼梯的总方案数为 f(x),则可以列出下面方程:(也可以一个个推理) 代码实现:(提交会超时) class Solution { public: int climbStairs(int n) { if(n<3){ return n; //1原创 2021-08-07 11:00:51 · 603 阅读 · 0 评论