09 2023 档案

摘要:题目:84. 柱状图中最大的矩形 思路: 实现要确定一个核心问题:包含完整一个柱子的最大矩形要找到这根柱子左侧最后一个高于他的柱子以及右侧最后一个高于他的柱子的位置(等同于左侧第一个小于他,右侧第一个小于他,因为+1 -1就是) 只要get到一个点,比如:30 50 70 80 60 70 40 这 阅读全文
posted @ 2023-09-23 11:24 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目:503. 下一个更大元素 II 思路: 总之就是走两次nums,可以拼接,也可以用下面的取余方式。 代码: func nextGreaterElements(nums []int) []int { lens := len(nums) res := make([]int, lens) for i 阅读全文
posted @ 2023-09-22 09:45 WtcSky 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目:739. 每日温度 思路: 要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了 维护一个 栈顶->栈底 由小到大的栈;这样在之后(右侧)遇到更大的数时,就可以得到所有在他前面并且比他小的数,就能获得结果。 初始化默认为0; 代码: func dail 阅读全文
posted @ 2023-09-21 10:19 WtcSky 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目:647. 回文子串 思路: 整体上是两种,就是s[i]与s[j]相等,s[i]与s[j]不相等这两种。 当s[i]与s[j]不相等,那没啥好说的了,dp[i][j]一定是false。 当s[i]与s[j]相等时,这就复杂一些了,有如下三种情况 情况一:下标i 与 j相同,同一个字符例如a,当然 阅读全文
posted @ 2023-09-20 11:12 WtcSky 阅读(8) 评论(0) 推荐(0) 编辑
摘要:题目:583. 两个字符串的删除操作 思路: 还是最长公共子序列,假设最长公共子序列长度是l;那么需要删除的次数是len(s1) - l + len(s2) - l 代码: func minDistance(word1 string, word2 string) int { lens1 := len 阅读全文
posted @ 2023-09-19 10:21 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目:392. 判断子序列 思路: 最长子序列的长度是不是len(s) 代码: func isSubsequence(s string, t string) bool { dp := make([][]int,len(s)+1) for i:=0;i<len(dp);i++{ dp[i] = mak 阅读全文
posted @ 2023-09-18 11:10 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目:1143. 最长公共子序列 思路: 主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同 如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = d 阅读全文
posted @ 2023-09-16 09:57 WtcSky 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目:300. 最长递增子序列 思路: dp[i]状态 取决于 dp[0] - dp[i-1]中小于dp[i]的元素中最大的值+1,即: for j:=0; j <i; j++ { if nums[i] > nums[j]{ dp[i] = max(dp[i], dp[j] + 1) } } 代码: 阅读全文
posted @ 2023-09-15 09:46 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目:309. 买卖股票的最佳时机含冷冻期 思路: 具体可以区分出如下四个状态: 状态一:持有股票状态(今天买入股票,或者是之前就买入了股票然后没有操作,一直持有) 不持有股票状态,这里就有两种卖出股票状态 状态二:保持卖出股票的状态(两天前就卖出了股票,度过一天冷冻期。或者是前一天就是卖出股票状态 阅读全文
posted @ 2023-09-14 09:46 WtcSky 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题目:123. 买卖股票的最佳时机 III 思路: 达到dp[i][1]状态,有两个具体操作: 操作一:第i天买入股票了,那么dp[i][1] = dp[i-1][0] - prices[i] 操作二:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1] 那么 阅读全文
posted @ 2023-09-13 09:45 WtcSky 阅读(5) 评论(0) 推荐(0) 编辑
摘要:题目:121. 买卖股票的最佳时机 思路: 贪心做起来更简单;dp多此一举……状态0是持有,状态1是不持有 代码: func maxProfit(prices []int) int { lens := len(prices) if lens == 0 { return 0 } dp := make( 阅读全文
posted @ 2023-09-12 10:10 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题目:198. 打家劫舍 思路: 决定dp[i]的因素就是第i房间偷还是不偷。 如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。 如果不偷第 阅读全文
posted @ 2023-09-11 10:20 WtcSky 阅读(3) 评论(0) 推荐(0) 编辑
摘要:题目:139. 单词拆分 思路: 单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词,说明就是一个完全背包! 动规五部曲分析如下: 确定dp数组以及下标的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个 阅读全文
posted @ 2023-09-09 09:08 WtcSky 阅读(13) 评论(0) 推荐(0) 编辑
摘要:## 题目:[70. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/description/) ### 思路: 除了`dp[i] = dp[i-1] + dp[i-2]`还可以用完全背包的方法,可以放无数个1或者2,看有多少种排列(先背包后物品) 阅读全文
posted @ 2023-09-08 09:40 WtcSky 阅读(4) 评论(0) 推荐(0) 编辑
摘要:![](https://img2023.cnblogs.com/blog/2527234/202309/2527234-20230907092218272-2002797447.png) ## 题目:[518. 零钱兑换 II](https://leetcode.cn/problems/coin-c 阅读全文
posted @ 2023-09-07 09:50 WtcSky 阅读(3) 评论(0) 推荐(0) 编辑
摘要:## 题目:[1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/) ### 思路: 和昨天的类似,越靠近和的一半剩下的就越少。 ` 相对于 01背包,本题中,石头的重量是 stones[i],石头的价值也是 s 阅读全文
posted @ 2023-09-06 10:07 WtcSky 阅读(10) 评论(0) 推荐(0) 编辑
摘要:## 题目:[416. 分割等和子集](https://leetcode.cn/problems/partition-equal-subset-sum/) ### 思路: 只有确定了如下四点,才能把01背包问题套到本题上来。 - 背包的体积为sum / 2 - 背包要放入的商品(集合里的元素)重量为 阅读全文
posted @ 2023-09-05 10:41 WtcSky 阅读(2) 评论(0) 推荐(0) 编辑
摘要:## 题目:[343. 整数拆分](https://leetcode.cn/problems/integer-break/ "343. 整数拆分") ### 思路: 状态转移方程:`dp[i] = max(dp[i], max((i-j)*j,dp[i-j]*j))`,其中`(i-j)*j`是把i分 阅读全文
posted @ 2023-09-04 11:45 WtcSky 阅读(5) 评论(0) 推荐(0) 编辑
摘要:## 题目:[62. 不同路径](https://leetcode.cn/problems/unique-paths/) ### 思路: **首先想到的是数论方法组合数其实就是向右和向下的步数是固定的,就找一个组合的个数就可以了。** 状态转移方程:一个位置的路径数就是,上面位置和左面位置路径数的和 阅读全文
posted @ 2023-09-02 19:13 WtcSky 阅读(3) 评论(0) 推荐(0) 编辑
摘要:## 题目:[509. 斐波那契数](https://leetcode.cn/problems/fibonacci-number/) ### 思路: 动规五部曲: 这里我们要用一个一维dp数组来保存递归的结果 1. **确定dp数组以及下标的含义** dp[i]的定义为:第i个数的斐波那契数值是dp 阅读全文
posted @ 2023-09-01 14:19 WtcSky 阅读(3) 评论(0) 推荐(0) 编辑

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