随笔分类 -  代码随想录学算法

代码随想录二刷,第一遍断断续续刷完很多都忘了,跟着一起二刷并训练自己写博客的习惯
摘要:##123.买卖股票的最佳时机III 题目|文章 ####思路 相比于122.买卖股票的最佳时机III,这道题多了一道限制,就是买卖次数的限制,我的想法是通过增加一维来实现。文章中给出的方法则更加简单,将各种状态全部列出来,用二维数组就可以实现。 点击查看代码 class Solution { pu 阅读全文
posted @ 2022-11-09 19:09 缩地 阅读(14) 评论(0) 推荐(0) 编辑
摘要:##121. 买卖股票的最佳时机 题目|文章 ####思路 这道题可以用贪心算法和暴力解决,在此不讨论,只考虑动态规划的做法。 数组以及下标含义。 dp[i][0]:手上持有股票时所能得到的最大金额 dp[i][1]:手上没有持有股票时所能得到的最大金额 理解这个含义的关键在于,dp[j][0]只考 阅读全文
posted @ 2022-11-09 16:40 缩地 阅读(14) 评论(0) 推荐(0) 编辑
摘要:##198.打家劫舍 题目|文章 ####思路 数组以及下标含义 dp[j]:当偷到第j家时所能获得的最多的金钱 递推公式 dp[j] = max(dp[j - 1], dp[j - 2] + nums[i]) 当偷到第j家时,如果偷这家,那么就不能偷前一家,所能得到的最大金额为dp[j - 2] 阅读全文
posted @ 2022-11-09 16:18 缩地 阅读(17) 评论(0) 推荐(0) 编辑
摘要:##39.单词拆分 题目|文章 ####思路 数组以及下标含义 dp[i]:字符串长度为i的话,dp[i]为true,表示可以拆分为一个或多个在字典中出现的单词。 递推关系 如果word出现在列表中,即[j,i]的子串出现在列表中,并且word之前的单词部分为true,那么这个子串为true 3.初 阅读全文
posted @ 2022-11-09 16:01 缩地 阅读(13) 评论(0) 推荐(0) 编辑
摘要:##70. 爬楼梯 题目|文章 ####思路 这道题目要求有序,因此是全背包的排列做法。 1.数组下标以及含义 dp[i]:爬到n台阶一共有dp[i]种方法。 2.递推关系 dp[i] += dp[i - j]; 3.初始化 dp[0]=1可以实现递推关系 4.遍历顺序 先遍历背包(n),再遍历物品 阅读全文
posted @ 2022-11-09 01:30 缩地 阅读(15) 评论(0) 推荐(0) 编辑
摘要:##完全背包 文章 ####思路 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 遍历 阅读全文
posted @ 2022-11-08 20:22 缩地 阅读(21) 评论(0) 推荐(0) 编辑
摘要:##1049. 最后一块石头的重量 II 题目|文章 ####思路 求剩余石头的最小重量。如果两个石头最接近总重量的平均值,那么剩余石头为最小重量。 所以先求出石头的总重量的一半。 1.数组以及下标的含义 dp[j]表示容量为j的背包,最多可以装重量为j的石头 2.确定递推公式 dp[j] = ma 阅读全文
posted @ 2022-11-08 20:06 缩地 阅读(25) 评论(0) 推荐(0) 编辑
摘要:##01背包问题 二维 文章 ####思路 本题没有特定的题目。有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 ####实现 dp数组及其含义 dp[i][j]表示背包的最 阅读全文
posted @ 2022-11-03 22:52 缩地 阅读(21) 评论(0) 推荐(0) 编辑
摘要:##343. 整数拆分 题目|文章 ####思路 一个动态规划问题最重要的就是找到递推公式,找到递推公式,整个题就已经解出来了。 这道题看到时会想分成几份比较好,等于10时与之前的数有什么关系。。。 确定数组及含义 dp[i]表示正整数等于i时所获得的最大乘积。 确定递推公式 dp[i-j]表示将i 阅读全文
posted @ 2022-11-03 16:07 缩地 阅读(20) 评论(0) 推荐(0) 编辑
摘要:##62. 不同路径 题目|文章 ####思路 这道题有二叉树,动态规划和数论三种解法,在此只讨论动态规划的解法。 确定动态数组及下标含义 这道题是m×n个位置,因此可以使用二维数组,第一个下标表示x位置,第二个下标表示y位置。 确定递推公式。 因为只能向下和向右移动,所以每个位置的路径等于上位置和 阅读全文
posted @ 2022-11-03 13:29 缩地 阅读(18) 评论(0) 推荐(0) 编辑
摘要:##509. 斐波那契数 题目|文章 ####思路 确实数组及其含义 确定递推公式 数组的初始化条件 确定遍历顺序 举例推导dp数组 ####实现 点击查看代码 class Solution { public: int fib(int n) { if(n <= 1) return n; vector 阅读全文
posted @ 2022-11-03 12:47 缩地 阅读(25) 评论(0) 推荐(0) 编辑
摘要:##435. 无重叠区间 题目|文章 ####思路 重叠区间题目的思路都是一样的,即先对左区间或者右区间进行排序,再去处理每个不重叠区间的边界问题。 按照左区间从小到大进行排序 当重叠时,更新右边界,结果加一 当不重叠时,同时更新左右边界 ####实现 点击查看代码 public: int eras 阅读全文
posted @ 2022-11-03 00:35 缩地 阅读(14) 评论(0) 推荐(0) 编辑
摘要:##860.柠檬水找零 题目|文章 ####思路 这道题看上去很复杂,其实只要把每种情况写下来,答案就已经解决了。 1.收到5 2.收到10 3.收到20 ####实现 点击查看代码 class Solution { public: bool lemonadeChange(vector<int>& 阅读全文
posted @ 2022-11-02 22:56 缩地 阅读(13) 评论(0) 推荐(0) 编辑
摘要:##1005.K次取反后最大化的数组和 题目|文章 ####思路 如何让翻转后的数组和最大,就是尽可能的反转绝对值大的负数。当反转次数多余时,不断反转绝对值最小的数。 首先将整个数组按照绝对值的大小从大到小排列 当有反转次数并且为负数时,反转负数 如果反转次数有剩余,那么反转绝对值最小的数,即排序后 阅读全文
posted @ 2022-11-02 20:51 缩地 阅读(24) 评论(0) 推荐(0) 编辑
摘要:##122.买卖股票的最佳时机II 题目|文章 ####思路 因为每天都可以将股票买入和卖出,因此,我们可以将买卖时机进行分解。 局部最优:如果当天的利润为正,则加入,如果当天利润为负,则不加入。 整体最优:所有天数的利润综合最大 ####实现 点击查看代码 class Solution { pub 阅读全文
posted @ 2022-11-02 01:21 缩地 阅读(17) 评论(0) 推荐(0) 编辑
摘要:##455.分发饼干 题目|文章 ####思路 满足能让最小胃口的孩子吃饱 首先对饼干和胃口值都进行排序 对饼干进行遍历,如果能满足当前孩子的胃口,那么就将结果加1。 ####实现 点击查看代码 class Solution { public: int findContentChildren(vec 阅读全文
posted @ 2022-11-01 22:29 缩地 阅读(20) 评论(0) 推荐(0) 编辑
摘要:##491. 递增子序列 题目|文章 ####思路 这个题中不能对这个序列进行重新排序,因此需要用到set进行去重 ####实现 点击查看代码 class Solution { public: vector<vector<int>> findSubsequences(vector<int>& num 阅读全文
posted @ 2022-10-29 00:35 缩地 阅读(11) 评论(0) 推荐(0) 编辑
摘要:##39. 组合总和 题目|文章 ####思路 题目的关键点在于无限制重复选取,那么可以不用去重,只要和sum == target 就可以返回。 ####实现 点击查看代码 class Solution { public: vector<vector<int>> combinationSum(vec 阅读全文
posted @ 2022-10-29 00:06 缩地 阅读(16) 评论(0) 推荐(0) 编辑
摘要:##216. 组合总和 III 题目|文章 ####思路 这道题是一道典型的组合问题,套用回溯模板进行考虑。 考虑参数和返回值。 很明显,返回值为void,参数包括n,k。因为要判断相加之和,需要一个参数sum记录当前组合的总和,此外我们还需要一个参数startIndex来控制回溯。 void ba 阅读全文
posted @ 2022-10-28 20:25 缩地 阅读(16) 评论(0) 推荐(0) 编辑
摘要:##77. 组合 题目|文章 ####思路:回溯 ####实现 点击查看代码 class Solution { public: vector<vector<int>> combine(int n, int k) { backTracking(n, k, 1); return result; } pr 阅读全文
posted @ 2022-10-28 01:02 缩地 阅读(11) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示