自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 算法学习笔记——二叉树经典算法题

这就是LeetCode112题:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。本题询问是否存在从当前节点 root 到叶子节点的路径,满足其路径和为 sum,假定从根节点到当前节点的值之和为 val,我们可以将这个大问题转化为一个小问题:是否存在从当前节点的子节点到叶子的路径,满足其路径和为 sum - val。我们可以注意到有几个叶子节点,就有几条路径,那如何找叶子节点呢?

2023-08-20 18:47:55 102 1

原创 算法学习笔记——迭代实现二叉树遍历

理论上,递归能做的迭代一定能做,但可能会比较复杂。上面几个递归的遍历方法,背都背下来了,所以有时候面试官要求不使用递归实现三种遍历,递归就是每次执行方法调用都会先把当前的局部变量、参数值和返回地址等压入栈中,后面在递归返回的时候,从栈顶弹出上一层的各项参数继续执行,这就是递归为什么可以自动返回并执行上一层方法的原因。

2023-08-17 09:52:53 105 1

原创 算法学习笔记——递归实现二叉树遍历

我们再从二叉树的角度看递归,每次遇到递归,都按照前面说的四步来写,可以更好地写出正确的递归算法。通过二叉树可以非常方便的理解递归,递归只处理当前这一层和下一层之间的关系,并不关心下层和下下层之间的关系,这就像老子只管养好儿子,至于孙子怎么样,那是儿子的事,你也不能瞎掺合。从图中可以看到,当root的一个子树为null的时候还是会执行递归,进入之后发现root==null了,然后就开始返回。递归的方法是很难调试的,即使对的,你也可能晕,这里介绍一种简单有效的验证方法——调用过程图法。

2023-08-16 23:55:58 135 1

原创 算法学习笔记——理解递归

我们先思考一个问题,上面的阶乘,如果n=4会调几次上面的f()方法呢?很明显应该是4次,递归的特征就是“不撞南墙不回头”,n=4,3和2时会继续递归,而n=1时发现满足退出条件了,就执行return 1,不再递归,而是不断返回上一层并计算。接着再看返回时每层参数的问题,递归本质上仍然是方法调用,所以可以按照方法调用的方式来验证写的对不对。下面这个图完整的表示了求阶乘的过程,你会发现递归不过是一个方法被调了好几次,每次n都在减小,这就是递进的过程。触底之后,也就是满足终止条件之后就开始返回了。

2023-08-14 23:40:32 103

原创 算法学习笔记——二叉树层次遍历经典问题

广度优先在面试里出现的频率非常高,整体属于简单题,但是很多人面试遇到时就直接放弃了,实在可惜。我们本章就集中研究一下到底难在哪里。广度优先又叫层次遍历,基本过程如下:层次遍历就是从根节点开始,先访问根节点下面一层全部元素,再访问之后的层次,类似金字塔一样一层层访问。我们可以看到这里就是从左到右一层一层的去遍历二叉树,先访问3,之后访问1的左右子孩子 9 和20,之后分别访问9 和20的左右子孩子 [8,13]和[15,17],最后得到结果[3,9,20,8,13,15,7]。

2023-08-13 09:41:18 335 1

原创 算法学习笔记——理解树的结构

int val;这里本质上就是有两个引用,分别指向两个位置,为了便于理解,我们分别命名为左孩子和右孩子。如果是N叉树该如何定义呢?int val;能否用数组来存储二叉树呢?其实就是用数组来存储二叉树,顺序存储的方式如图:用数组来存储二叉树如何遍历的呢?如果父节点的数组下表是i,那么它的左孩子就是i * 2 + 1,右孩子就是 i * 2 + 2。但是用链式表示的二叉树,更有利于我们理解,所以一般我们都是用链式存储二叉树。所以大家要了解,用数组依然可以表示二叉树。

2023-08-12 10:52:17 59 1

原创 算法学习笔记——队栈和Hash的经典问题

队列和Hash是个基础工具,在算法里的应用非常广,例如广度优先等等,这些问题我们后面再说,这里先看几个比较纯粹的队栈问题或者Hash问题。

2023-08-11 23:43:08 44 1

原创 算法学习笔记——队列和Hash的特征

队列和Hash不管在技术中,还是在工程里,应用非常广,这里我们先理解其特征。

2023-08-11 08:58:55 146 1

原创 算法学习笔记——栈的经典问题

栈有很多典型的题目,这些题目整体难度不算很大,但是对于刚刚开始刷算法的同学来说,还是会感到比较吃力,这一章,我们就来盘点几个经典的高频栈算法问题。

2023-08-06 22:07:57 391

原创 算法学习笔记——理解栈手写栈

栈底层实现仍然是链表或者顺序表,栈与线性表的最大区别是数据的存取的操作被限制了,其插入和删除操作只允许在线性表的一端进行。一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作称为入栈(Push),删除元素的操作称为出栈(Pop)。栈是很多表达式、符号等运算的基础,也是递归的底层实现。采用顺序表实现的的栈,内部以数组为基础,实现对元素的存取操作。比如说,我先让1和2入栈,然后 2 和1出栈,然后再让3 和4 入栈再依次出栈,这样就得到了序列2143。

2023-08-05 08:28:01 60

原创 算法学习笔记——双指针的妙用

我们前面说过数组里的元素是紧紧靠在一起的,假如有空隙后面的元素就要整体向前移动。同样如果在中间位置插入元素,那么其后的元素都要整体向后移动。在后面可以看到很多算法题都需要多轮、大量移动元素,这就导致执行效率低下。如何解决该问题是数组算法的一个重要问题,其中一种非常好用的方式就是双指针思想。

2023-08-04 18:18:13 157 1

原创 算法学习笔记——数组

将给定的元素插入到有序数组的对应位置中,我们可以先找位置,再将其后元素整体右移,最后插入到空位置上。而python更为灵活可以直接指定是什么,例如a = [1,2,3,4],就是数组里有四个元素,而a = [0 for i in range(10)]这样定义的数组就是[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]初始化的本质就是覆盖已有的值,用你需要的值覆盖原来的0,因为数组本来是{0,0,0,0,0,0,0,0,0,0},这里只不过被你替换成了{1,2,3,4,5,0,0,0,0,0}。

2023-08-02 17:33:13 53

原创 算法学习笔记——链表反转拓展问题

链表反转有几道很常见的拓展问题,这些都是面试的高频问题,这一关,我们来集中研究一下。

2023-08-01 21:36:58 124

原创 算法学习笔记——手写链表反转

链表反转是一个出现频率特别高的算法题,在面试中经常出现。链表反转在各大高频题排名网站也长期占领前三。比如牛客网上这个No1 好像已经很久了。所以链表反转是我们学习链表最重要的问题,没有之一。为什么反转这么重要呢?因为反转链表涉及结点的增加、删除等多种操作,能非常有效考察思维能力和代码驾驭能力。另外很多题目也都要用它来做基础, 例如指定区间反转、链表K个一组翻转。还有一些在内部的某个过程用到了反转,例如两个链表生成相加链表。还有一种是链表排序的,也是需要移动元素之间的指针,难度与此差不多。

2023-07-31 12:09:56 139 1

原创 算法学习笔记——链表经典问题

💡 链表的算法题比数组少很多,而在回溯贪心动规等高级算法中很少见到链表的影子。我们这里就集中研究一些出现频率特别高的算法题。

2023-07-30 21:47:26 109 1

原创 算法学习笔记——链表学习

删除的过程不算复杂,也是找到要删除的结点的前驱结点,这里同样要在提前一个位置判断,例如下图中删除40,其前驱结点为7。遍历的时候需要判断cur.next是否为40,如果是,则只要执行cur.next=null即可,此时结点40变得不可达,最终会被JVM回收掉。

2023-07-18 10:25:24 363 1

原创 Hadoop学习笔记

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。其中最主要的是HDFS、MapReduce和YARN模块。HDFS:负责大数据的分布式存储MapReduce:负责大数据的分布式计算YARN:负责大数据集群资源的管理与调度什么是Zookeeper?Zookeeper是一个分布式的、开源的协调服务框架,服务于分布式应用。Zookeeper的特点基本架构工作原理数据模型。

2023-04-05 09:44:39 92

原创 vue3快速上手

什么是hook?—— 本质是一个函数,把setup函数中使用的Composition API进行了封装。类似于vue2.x中的mixin。自定义hook的优势: 复用代码, 让setup中的逻辑更清楚易懂。

2023-04-04 23:49:34 39 1

原创 Vue2学习笔记

一、Vue基础原理与用法Vue2官方文档Vue3官方文档1.1 初识Vue想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象;root容器里的代码依然符合html规范,只不过混入了一些特殊的Vue语法;root容器里的代码被称为【Vue模板】;Vue实例和容器是一一对应的;真实开发中只有一个Vue实例,并且会配合着组件一起使用;{{xxx}}中的xxx要写js表达式,且xxx可以自动读取到data中的所有属性;一旦data中的数据发生改变,那么页面中用到该数据的地方也会自动

2023-04-04 23:44:57 483 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除