
LeetCode
子翊寒
放开,请让我带你入门
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划专题:LeetCode 完全平方数
原题链接 279. 完全平方数 思路 这道题跟之前的动态规划有些区别。刷了不少动态规划的题目。大部分的结构,都是类似于这种形式 dp[i] = Math.max(min)(dp[i-n]+k, dp[i-m]+k1) + M 这种形式,涉及到最大小值,肯定涉及到题目求解的最值问题 而且一般绝大多数情况下是,时间复杂度都是O(n)。 这次的题目,主要涉及到一些关键点的处理。 如果不考虑这些关键点,...原创 2020-03-24 23:14:34 · 246 阅读 · 0 评论 -
动态规划专题:LeetCode 乘积最大子数组
原题链接 乘积最大子数组 思路 刷题得按专题刷,发现这道题很有意思。 因为负数的引入,导致推导状态就比较麻烦。看了题解,分别记录最大值和最小值。当遇到负数的时候,最大值将会变为最小,最小将会变为最大。真的很巧妙。算是开拓了一个新的思路。 class Solution { public int maxProduct(int[] nums) { int max = Intege...原创 2020-03-24 19:54:15 · 221 阅读 · 0 评论 -
动态规划专题:LeetCode连续数列
LeetCode题目链接 面试题 16.17. 连续数列 这个题目和最大子数列是一个题目 思路 用 dp[i] 表示,连续数列的和。 当 dp[i-1] 小于0的时候,它如果加上nums[i]的话,肯定比单独的nums[i]小。此时,设置 dp[i] 为 nums[i]。 如果它大于0,可以让其尝试继续相加。 这里的dp[i]并不是说 i 位置前面连续数列的最大值。 实现 class Soluti...原创 2020-03-24 15:09:00 · 266 阅读 · 0 评论 -
动态规划专题:LeetCode 按摩师
LeetCode题目 面试题 17.16. 按摩师 思路 为什么要用动态规划 在知道如何使用动态规划前,知道何时使用动态规划最重要吧。 如果你要知道最后一天的值,取决于第三天做不做,这就是二叉树的结构,一般涉及到两个选择的,画下的话,可以看到有重叠部分,可以考虑动态规划。 遇到最值问题的时候,后面的选择取决于前面选择的时候,考虑动态规划。 遇到子序列的(可不连续)的时候,考虑动态规划。 最重要...原创 2020-03-24 13:39:25 · 302 阅读 · 0 评论 -
3. 无重复字符的最长子串
原题链接 3. 无重复字符的最长子串 解题思路 在谈及重复问题,大概率会使用 hashmap 或者 hashset 最长子串,因为是连续的,所以有点想使用滑动窗口的方法 滑动窗口 在 HashMap 中维护一个表,这个表的作用: 记录每个字符最后一次出现的位置索引 HashMap 天然是无重复的 以abcba举例,在检索到abc的时候,在hashmap中存入,a-0,b-1,c-2。 当检...原创 2020-03-23 11:21:04 · 153 阅读 · 0 评论