
算法题解
以专题为主,深入学习算法
Golang服务端工程师
服务端工程师
展开
-
【3分钟秒懂算法题解】 LeetCode 121. 买卖股票的最佳时机
105.从前序与中序遍历序列构造二叉树原题链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出...原创 2020-03-03 09:32:52 · 3534 阅读 · 0 评论 -
【3分钟秒懂算法题解】 LeetCode 110. 平衡二叉树
110. 平衡二叉树原题链接给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,...原创 2020-03-02 17:14:17 · 4268 阅读 · 0 评论 -
【3分钟秒懂算法题解】 LeetCode 2. 两数相加
2. 两数相加原题链接给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -...原创 2020-03-02 16:43:26 · 4485 阅读 · 0 评论 -
【最详细的算法视频题解】—— Leetcode 206. 反转链表
206. 反转链表原题链接反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL解法1 - 迭代使用2个指针来记录上一个节点(pre),当前结点(cur)在遍历链表的过程中调整指向关系。代码片段public ListNode reverseIteration...原创 2020-03-02 15:17:41 · 331 阅读 · 0 评论 -
从斐波那契数列、股票问题到最长回文子串,一文带你入门动态规划
“动态规划”用于多阶段最优化问题的求解斐波那契数列、LeetCode-70. 爬楼梯这里会比较啰嗦,解释公式的来源。要点F(n)=F(n−1)+F(n−2)F(n)=F(n-1)+F(n-2)F(n)=F(n−1)+F(n−2)第一行是下标第二行是和解法当前如果传入的数为N,可以创建一个长度N+1([0…N])空间的 dp table来记录。斐波那契数列 N=0,Val...原创 2020-02-25 17:09:25 · 1229 阅读 · 0 评论 -
【最详细的算法视频题解】【动态规划】—— 斐波那契数列、 Leetcode 70. 爬楼梯
斐波那契数列斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ ...原创 2020-02-21 17:24:38 · 585 阅读 · 0 评论 -
【最详细的算法视频题解】—— Leetcode 450. 删除二叉搜索树中的节点
450. 删除二叉搜索树中的节点原题链接要点理解二叉搜索树中序遍历是有序数组理解怎么遍历二叉搜索树欲查找的值如果与某个结点比较时,继续在这个节点的右边查找,反之左边,相等返回结果。删除时保证而二叉搜索树的性质不变。解法找到欲删除的节点位置。找到一个值能够替换它(之后将它删除,否则将有两个相同元素),保持中序遍历数组的有序性。代码片段class Solu...原创 2020-02-17 09:04:45 · 992 阅读 · 1 评论 -
【最详细的算法视频题解】—— Leetcode 515. 在每个树行中找最大值
515. 在每个树行中找最大值原题链接要点关键词: 每一行也就是说当遇到某一行的时候,只要更新这一行的最大值即可。代码片段class Solution { List<Integer> list = new ArrayList<>();//1.初始化结果数组 public static void main(String[] args) { TreeNod...原创 2020-02-16 22:10:18 · 279 阅读 · 0 评论 -
【最详细的算法视频题解】—— Leetcode 662. 二叉树最大宽度
662. 二叉树最大宽度原题链接要点关键点在于这一层的长度是由这一层的最左侧节点与最右侧节点来计算。与树中的值没有关系,请屏蔽里面的内容来解题。满二叉树,黑色结点当做null节点看解法假设取第二层,即 d=2d = 2d=2 的某个结点。满二叉树中,某个结点的左孩子节点位置在 2∗d2 * d2∗d,右孩子节点位置在 2∗d+12*d+12∗d+1想办法记录当前层其中一侧(最...原创 2020-02-16 21:52:10 · 734 阅读 · 0 评论 -
【最详细的算法视频题解】 LeetCode623. 在二叉树中增加一行
623. 在二叉树中增加一行原题链接要点这里需要注意:添加规则里面说明在d层增加节点是在d-1的每个节点上增加左右两个节点。比如在d=3的时候,要根据d=2添加节点一共添加4个节点。解法d=3d=3d=3在d=2的时候,将v元素节点作为该结点的左右孩子节点,之后将原d=3的节点与v节点连接。需要注意当d=1的时候,也就是没有上一层节点无法添加节点。题目要求:如果 d...原创 2020-02-16 21:07:14 · 256 阅读 · 0 评论 -
算法修炼 Leetcode 文章说明
Algorithm博客地址为什么学习算法爽啊,会让我感觉时间过得很快,就没时间玩游戏了。内容介绍LeetCode、《算法4》、《程序员代码面试指南:IT 名企算法与数据结构题目最优解》等算法内容讲解,面向面试编程。注意事项代码以专题的形式给出,如二叉树的遍历、二叉树路径和等等。代码中部分储存结果的数组可以转化成全局变量,在LeetCode能提升不少的性能,但是这里不用全局变量来污...原创 2020-02-10 10:59:28 · 161 阅读 · 0 评论