10 2023 档案

摘要:链接 https://leetcode.cn/problems/trapping-rain-water/description/ 思路 1. 在线处理。既然是接雨水,那肯定是形成一个类似于碗的结构才能接。可以先找到一个最大值当兜底,然后不断的用当前border去夹逼。如果遇到比当前border高的, 阅读全文
posted @ 2023-10-27 18:39 BJFU-VTH 阅读(31) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/house-robber/description/ 思路 相邻的要么选,要么不选。 设置dp[i]表示以nums[i]为结尾的序列的最大收益。所以状态转移方程为:dp[i] = max(dp[i-1], dp[i-2]+nums[i]) 阅读全文
posted @ 2023-10-24 10:03 BJFU-VTH 阅读(5) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/longest-increasing-subsequence/description/ 思路 经典DP题目。 我们用dp[i]代表了第i个元素为最终子序列长度的最长递增子序列的长度。 总体思想就是,对于某个子序列i,去遍历它前面的dp[ 阅读全文
posted @ 2023-10-23 19:20 BJFU-VTH 阅读(7) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/maximum-subarray/description/ 思路 1. 在线处理法:对于一个连续的序列来说,如果它小于0,那么它对于周围所有的数组都是减益效果。试想一下,任何数与负数相加,都小于它本身。根据此,可以用在线处理法,O(n) 阅读全文
posted @ 2023-10-23 13:43 BJFU-VTH 阅读(4) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/jump-game-ii/description/ 思路 最基本的思路,能到达某结点的跳跃方式中,最左边的那个结点是最优的;换句话说,到达左边的结点比到达右边的结点更容易。 所以我们可以写代码模拟,每次都求能达到target_index 阅读全文
posted @ 2023-10-23 09:57 BJFU-VTH 阅读(6) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/generate-parentheses/description/ 分析 这个题目是让生成有效的括号组合,首先我们搞明白一个问题,什么叫有效的括号? 1. 所有的括号都能找到有效的闭合。 基于此,我们可以认为:左括号数等于右括号数,且从 阅读全文
posted @ 2023-10-19 14:00 BJFU-VTH 阅读(11) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/number-of-islands/description/ 思路 跟岛屿周长差不多...但我觉得这个比岛屿周长还简单。不知道为什么这个算中等题目,岛屿周长算简单题目 代码 class Solution: def numIslands( 阅读全文
posted @ 2023-10-17 10:05 BJFU-VTH 阅读(4) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/ 思路 时刻记住,DFS是递归的一种。而解决递归,最朴素的思路就是:递归的定义就是递归的解。 题目要求我们求根节点到叶子结点的和,我们要提供一个值保持其状态,退出 阅读全文
posted @ 2023-10-16 11:21 BJFU-VTH 阅读(10) 评论(0) 推荐(0) 编辑
摘要:问题描述 给你一个数组,生成这个数组中元素的全排列。 思路 经典的循环dfs。要点是我们需要设置visited数组来指代其是否被遍历过。 代码 class Solution: def islandPerimeter(self, grid): if not grid: return [] visite 阅读全文
posted @ 2023-10-16 11:05 BJFU-VTH 阅读(10) 评论(0) 推荐(0) 编辑
摘要:单调栈有什么用? 栈为容器,特性是后入先出。 经典栈的应用场景大概为:浏览器的后退按钮实现等。即:栈的一个应用场景就是状态保持。 单调栈和经典栈的区别是,栈是一股脑的存,单调栈是让栈内的元素(或者是栈内元素的对应元素)具有单调的特性。 那这个单调的特性有啥用呢?我们不考虑其他的,只考虑栈内元素和待入 阅读全文
posted @ 2023-10-09 13:00 BJFU-VTH 阅读(29) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/next-greater-element-ii/description/ 思路 我在单调栈这块是真的不会......稍微一变就想不明白了, 得找个时间攻克一下 这个题目,我能想到的办法就是把数组拉长到2倍(模拟循环数组),然后对其进行单 阅读全文
posted @ 2023-10-09 10:42 BJFU-VTH 阅读(3) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/132-pattern/description/ 思路 这题其实不难,就是边界条件难想。 我们可以先保证单调栈里是逆序,然后判断单调栈中较小的值是否大于当前元素(满足132的1和2的关系)。 代码 class Solution: def 阅读全文
posted @ 2023-10-08 19:09 BJFU-VTH 阅读(4) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/remove-k-digits/description/ 思路 这个题目要求移除k位后,剩下的数字最小。既然剩下的数字最小,那就牵扯到了类似于“字典序”这样一个概念。这样的题目是适合用单调栈来进行解决的。 依然是单调栈的三板斧: 1. 阅读全文
posted @ 2023-10-08 11:24 BJFU-VTH 阅读(12) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/remove-duplicate-letters/description/ 思路 这个题并不是传统的单调栈,所以硬套单调栈会懵逼。 什么时候用单调栈? 这个题目要求去除重复字母,还要保持字典序。 注意,跟相对顺序相关的题目,如:其后比他 阅读全文
posted @ 2023-10-08 09:56 BJFU-VTH 阅读(22) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/final-prices-with-a-special-discount-in-a-shop/description/ 思路: 单调栈 单调栈,顾名思义,就是在栈内,元素要么是单调递减的,要么是单调递增的。 这个题目要求我们找下一个更小 阅读全文
posted @ 2023-10-07 14:01 BJFU-VTH 阅读(7) 评论(0) 推荐(0) 编辑
摘要:链接 https://leetcode.cn/problems/next-greater-element-i/description/ 思路 1. 暴力解法 暴力解法没啥好说的,对于nums1中的元素,先找到其在nums2中的位置,然后往后找比他大的第1个元素就好了。这样的做法是O(m*n)的时间复 阅读全文
posted @ 2023-10-07 13:27 BJFU-VTH 阅读(9) 评论(0) 推荐(0) 编辑