leetcode
xxaxtt
这个作者很懒,什么都没留下…
展开
-
Java中PriorityQueue的陷阱
PriorityQueue增加元素时,并不能使整个数列是有序的,只能保证队首元素是最大值或最小值,其它是乱序的。删除队首元素时,会更新新队首元素。测试代码如下 @Test public void test4() { PriorityQueue<Integer> que = new PriorityQueue<>((a1, a2) -> { return a2 - a1; }); que.offe原创 2021-04-13 10:13:22 · 225 阅读 · 0 评论 -
leetcode优秀java代码
10. 正则表达式匹配. ----java回溯和动态规划,详细代码注释版本。回溯法的代码很简洁原创 2021-03-16 22:28:16 · 93 阅读 · 0 评论 -
动态规划:边界状态初始化,dp定义
在我的题解188. 买卖股票的最佳时机 IV中, 比较了2种dp定义*2中边界初始化共4种不同的方法。边界状态的初始化和dp定义是密切相关的。如果定义dp[j][k]为最多k次交易,则1次交易时,所以k>=1的都能赋值。如果定义dp[j][k]为恰好k次交易,则1次交易时,只有k=1能赋值。 // //用i=0初始化, dp[j][k]为最大k次交易 // for(int k=0;k<=k1;k++){ // dp[0][k]=0;/原创 2021-03-12 22:53:01 · 580 阅读 · 0 评论 -
动态规划:状态压缩总结
题目题1:198. 打家劫舍状态压缩前的代码如下。 dp[0] = nums[0]; dp[1] = Math.max(nums[0], nums[1]); for (int i = 2; i < length; i++) { dp[i] = Math.max(dp[i - 2] + nums[i], dp[i - 1]); } return dp[length - 1];i-2, i-1, idp1,dp2计算dp[i]只需要前两个状态dp[i-1]原创 2021-03-12 13:07:26 · 430 阅读 · 0 评论 -
股票相关问题总结
参考相关题目121 买卖股票的最佳时机。限制了单次交易。122 买卖股票的最佳时机 II。不限制交易次数,状态转移方程最好写。123 买卖股票的最佳时机 III 。这是188题k=2的特殊情况。188 买卖股票的最佳时机 IV 。限制交易次数时,需要将交易次数也纳入状态定义中。309 最佳买卖股票时机含冷冻期。将冷冻期处理为第3种状态(前两种是持有、不持有),非常高明!如果冷冻期是N天,需要多定义N种状态,例如冷冻N、冷冻N-1等等,冷冻N只能来自持有状态,冷冻N可转换为冷冻N-1状态,冷冻1原创 2021-03-11 18:52:56 · 154 阅读 · 0 评论 -
java位运算
参考java位运算究竟有用么?java位运算20个位运算技巧原创 2020-12-02 13:30:29 · 82 阅读 · 0 评论 -
递归bfs
参考102. 二叉树的层序遍历原创 2021-03-08 21:45:01 · 830 阅读 · 0 评论 -
非递归dfs
参考130. 被围绕的区域题目130. 被围绕的区域原创 2021-03-06 21:54:04 · 130 阅读 · 0 评论 -
并查集总结
参考并查集(Union-Find)算法介绍399. 除法求值原创 2021-03-04 12:09:15 · 65 阅读 · 1 评论 -
LeetCode代码优化
经常需要在函数间传递的变量,可以定义为成员变量。例如,liweiwei1419:回溯算法(Java)。public class Solution { private static final int[][] DIRECTIONS = {{-1, 0}, {0, -1}, {0, 1}, {1, 0}}; private int rows; private int cols; private int len; private boolean[][] visite.原创 2021-03-01 10:53:53 · 269 阅读 · 0 评论 -
前缀树、字典树
参考Trie Tree 的实现 (适合初学者)。理论讲的不错。https://leetcode-cn.com/problems/implement-trie-prefix-tree/solution/javashi-xian-qian-zhui-shu-zi-dian-shu-by-zjydream/。代码写的好。官方:实现 Trie (前缀树)原创 2021-02-28 15:52:49 · 88 阅读 · 0 评论 -
leetcode回溯法总结
参考学一套走天下(回溯算法)原创 2021-02-27 16:32:14 · 139 阅读 · 0 评论 -
LeetCode难题集
二叉树538. 把二叉搜索树转换为累加树原创 2021-02-25 12:08:45 · 198 阅读 · 0 评论 -
leetcode题型总结
动态规划回朔算法贪心算法原创 2021-02-24 10:58:47 · 92 阅读 · 0 评论 -
二分法总结
参考liweiwei1419:写对二分查找不能靠模板,需要理解加练习 (附练习题,持续更新)原创 2021-02-20 23:50:33 · 77 阅读 · 0 评论 -
java刷题常用数据结构
队列:LinkedList栈:LinkedList原创 2020-09-18 10:21:43 · 470 阅读 · 0 评论 -
python刷题常用数据结构
参考教你用python高效刷leetcode原创 2021-01-06 16:35:06 · 548 阅读 · 0 评论 -
单调栈问题总结
参考暴力解法、栈(单调栈、哨兵技巧)-题目题解42. 接雨水(困难)暴力解法、优化、双指针、单调栈739. 每日温度(中等)暴力解法 + 单调栈496. 下一个更大元素 I(简单)暴力解法、单调栈316. 去除重复字母(困难)栈 + 哨兵技巧(Java、C++、Python)901. 股票价格跨度(中等)「力扣」第 901 题:股票价格跨度(单调栈)402. 移掉K位数字581. 最短无序连续子数组...原创 2020-12-17 11:57:24 · 144 阅读 · 0 评论 -
算法:和大于零的最长子串
问题:有数组arr[], 求和大于0的最长子串。解法1:定义s[i]=0到i-1的和,则问题转化为s[j]-s[i]>0时,j-i最大值,其中0<=i<j<=n。遍历i、j,时间复杂度O(N^2).解法2:如何将时间复杂度降为O(N)?...原创 2020-10-24 22:36:52 · 1390 阅读 · 0 评论 -
算法:子序列问题
文章目录最大子序和最大子序和原创 2020-11-02 17:55:08 · 134 阅读 · 0 评论 -
背包问题总结
「力扣」上的 0-1 背包问题:第 416 题:分割等和子集(中等)第 474 题:一和零(中等)第 494 题:目标和(中等)第 879 题:盈利计划(困难)原创 2020-11-08 21:31:24 · 158 阅读 · 0 评论 -
动态规划总结
动态规划套路详解:非常好的参考文献动态规划解决问题本质还是在枚举,状态转移方程就具体的枚举方法。动态规划相对暴力解法的优势,在于动态规划用dp table存储了中间子问题的结果,从而减少了大量重复计算,优化了时间复杂度。...原创 2020-11-09 21:58:42 · 164 阅读 · 0 评论