![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 84
月犹依依
RPG、Flow、Loop & Zoom! Have fun every day~
一天一天成长为架构师~
展开
-
LeetCode刷题:栈与队列
栈与队列栈用2个queue实现stack439. 三元表达式解析器71. 简化路径316. 去除重复字母队列栈用2个queue实现stackhttps://leetcode-cn.com/problems/implement-stack-using-queues/class MyStack { Queue<Integer> queue1; // 对外输出 Queue<Integer> queue2; // 对内输入 /** Initialize原创 2021-03-26 18:16:06 · 183 阅读 · 0 评论 -
LeetCode刷题:递归
递归例题439. 三元表达式解析器21. 合并两个有序链表779. 第K个语法符号递归与回溯的不同:递归是能够确定唯一解,向着一个方向不断深入回溯则是有不同的决策,每一步都需要试探,需要根据状态决定是否回滚。例题439. 三元表达式解析器https://leetcode-cn.com/problems/ternary-expression-parser/Key point:T的话取3-最后一个:之间的数据F的话取最后一个:之后的数据21. 合并两个有序链表https://leetc原创 2021-03-26 18:10:03 · 146 阅读 · 0 评论 -
LeetCode刷题:其他
其他模拟乘法149.直线上最多的点树模拟幂次原地hash位运算191.位1的个数模拟乘法不能直接用Long,问题在于会出现溢出的情况。只能手动模拟相乘的情况class Solution { public String multiply(String num1, String num2) { if (num1.equals("0") || num2.equals("0")) { return "0"; } String原创 2021-03-26 17:25:32 · 77 阅读 · 0 评论 -
LeetCode刷题:动态规划
动态规划例题5.最长回文子串不同的二叉搜索树139.单词拆分53.最大子序和64.最小路径和562. 矩阵中最长的连续1线段91. 解码方法例题5.最长回文子串https://leetcode-cn.com/problems/longest-palindromic-substring/多条件的动态规划,多条件填表class Solution { public int minDistance(String word1, String word2) { int n = wo原创 2021-03-26 16:54:40 · 219 阅读 · 0 评论 -
LeetCode刷题:BFS
BFS引导BFS通用解法例题102,树的层次遍历:标准解法207. 课程表:拓扑排序994. 腐烂的橘子:多路BFS引导讲解BFS与DFS对比DFS关键字:递归/栈 + 所有解DFS实现重要依赖于堆栈/递归 ,较为简单的解决了如何遍历所有元素,以及寻求“终点”的问题。但是,DFS虽然可以查找到到达路径,但是却找不到最短的路径,针对这一问题,给出了BFS(广度优先遍历)的算法。与DFS不同的是,这次不再是每个分叉路口一个一个走了,而是全部,同时遍历,直到找到终点,所对应的“层数”便是最短路径所需原创 2021-03-26 16:14:16 · 167 阅读 · 0 评论 -
LeetCode刷题:DFS与回溯2
DFS与回溯201背包:DFS-》记忆化搜索-》动态规划其他类型394. 字符串解码:DFS待整理01背包:DFS-》记忆化搜索-》动态规划参考记忆化搜索,DFS版本实际上上述DFS解法-》记忆化搜索就是开一个状态空间,记录每一次当前规模问题的解,方便今后去取用。要明确内存空间的意义,该问题memo[index][capacity]意思是当前选取/不选取(两种结果的确认)第index物品时,容量为capacity时的最优解。原因是:dfs在自底向上的过程中,在不断回溯时会问自己许多重复问题,在当前某原创 2021-03-26 15:33:47 · 195 阅读 · 0 评论 -
LeetCode刷题:DFS与回溯1
DFS与回溯引导例题,自顶向下类型113. 路径总和 II39. 组合总和78. 子集46. 全排列引导深度优先搜索:结题思路总结:https://www.cnblogs.com/handsomelixinan/p/10346065.html怎么样写回溯算法(从上而下,※代表难点,根据题目而变化)①画出递归树,找到状态变量(回溯函数的参数),这一步非常重要※②根据题意,确立结束条件③找准选择列表(与函数参数相关),做出不同的决策,与第一步紧密关联※④判断是否需要剪枝⑤作出选择,递归调用,原创 2021-03-26 15:33:09 · 228 阅读 · 0 评论 -
LeetCode刷题:数组
数组2021年3月11日8:27类型一二分法:有序引导:https://mp.weixin.qq.com/s/fCf5QbPDtE6SSlZ1yh_q8Q例题:https://leetcode-cn.com/problems/search-insert-position/solution/sou-suo-cha-ru-wei-zhi-by-leetcode-solution/知识点:时间复杂度:O(logn)。空间复杂度:O(1)只要看到给出的数组是有序数组,都可以想一想是否可以使用原创 2021-03-22 17:55:40 · 124 阅读 · 0 评论 -
LeetCode刷题:链表
链表基础操作:设计链表虚拟头结点例题1基础操作:设计链表引导题目public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class MyLinkedList { int size; ListNode head; // sentinel node as pseudo-head public MyLinkedList() { size = 0; head =原创 2021-03-23 16:17:44 · 291 阅读 · 1 评论 -
LeetCode刷题:字符串
字符串字符串转数组例题1:基本双指针类操作KMP字符串转数组用数组的各种技巧(双指针、滑动窗口等解题)例题1:基本双指针类操作题目链接class Solution { public String reverseStr(String s, int k) { char[] a = s.toCharArray(); for (int start = 0; start < a.length; start += 2 * k) { int原创 2021-03-24 11:46:27 · 101 阅读 · 0 评论 -
LeetCode刷题:树2
二叉树其他其他重建二叉树:前序遍历对于任意一颗树而言,前序遍历的形式总是[ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ]即根节点总是前序遍历中的第一个节点。而中序遍历的形式总是[ [左子树的中序遍历结果], 根节点, [右子树的中序遍历结果] ]只要我们在中序遍历中定位到根节点,那么我们就可以分别知道左子树和右子树中的节点数目。由于同一颗子树的前序遍历和中序遍历的长度显然是相同的,因此我们就可以对应到前序遍历的结果中,对上述形式中的所有左右括号进行定位。考虑使用哈希表原创 2021-03-24 16:55:12 · 131 阅读 · 0 评论 -
LeetCode刷题:树1
二叉树四种基本遍历四种基本遍历围绕着三种遍历dfs有许多的习题其中一大类是后序遍历的状态转移,自底向上的写法,有返回值的dfs,通过左右孩子推出中间节点的值或者状态然后继续上推前序: public void preTraversal(Node node){ if (node == null) //很重要,必须加上 当遇到叶子节点用来停止向下遍历 return; System.out.print(node.getValue()+" ");原创 2021-03-24 16:16:00 · 100 阅读 · 0 评论