EvilChou
码龄4年
关注
提问 私信
  • 博客:100,132
    社区:1
    100,133
    总访问量
  • 28
    原创
  • 1,352,189
    排名
  • 36
    粉丝
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2020-10-26
博客简介:

Hello World!

查看详细资料
个人成就
  • 获得100次点赞
  • 内容获得10次评论
  • 获得478次收藏
  • 代码片获得559次分享
创作历程
  • 30篇
    2022年
成就勋章
兴趣领域 设置
  • Python
    python
  • Java
    tomcatspringmavenkafkajava-eespring bootspring cloudjvmlog4jservletmybatisjava-zookeeper
  • 数据结构与算法
    算法数据结构线性回归链表贪心算法动态规划排序算法决策树最小二乘法b树散列表随机森林支持向量机宽度优先广度优先深度优先图搜索算法霍夫曼树哈希算法
  • 后端
    sqlmysqltomcatspringnginxnode.jsspring boot后端中间件spring cloud
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

动态规划相关

动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心算法,贪心没有状态推导,而是从局部直接选最优的,例如:有N件物品和一个最多能背重量为W 的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。............
原创
发布博客 2022.08.15 ·
432 阅读 ·
0 点赞 ·
1 评论 ·
0 收藏

二叉树相关

刚刚我们说过了二叉树有两种存储方式顺序存储,和链式存储,顺序存储就是用数组来存,这个定义没啥可说的,我们来看看链式存储的二叉树节点的定义方式。int val;};大家会发现二叉树的定义 和链表是差不多的,相对于链表 ,二叉树的节点里多了一个指针, 有两个指针,指向左右孩子。int val;}}}二叉树的递归遍历递归算法的三个要素。每次写递归,都按照这三要素来写,可以保证写出正确的递归算法!........................
原创
发布博客 2022.08.10 ·
2089 阅读 ·
2 点赞 ·
0 评论 ·
5 收藏

堆排序(Heap Sort)实现

第二个非叶子节点 1:nums[1]
原创
发布博客 2022.08.08 ·
2225 阅读 ·
3 点赞 ·
0 评论 ·
19 收藏

PriorityQueue(优先队列)

我们都知道队列是一种先进先出的数据结构,没有优先级,众数据平等.但是在某些情况下,我们操作的数据可能带有优先级,出队列时要优先级高的先出,低的后出.在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象.这种数据结构就是我们今天要介绍的优先级队列.在Java的集成框架中主要有两种类型的优先级队列,分别为:PriorityQueue和PriorityBlockingQueuePriorityQueue是线程不安全的,PriorityBlockingQueue是
原创
发布博客 2022.08.06 ·
6393 阅读 ·
17 点赞 ·
4 评论 ·
51 收藏

栈和队列(Java)

栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。压栈:向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;出栈:从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。........
原创
发布博客 2022.08.04 ·
2594 阅读 ·
2 点赞 ·
0 评论 ·
8 收藏

双指针方法

如果左指针left 指向的元素等于val,此时将右指针right 指向的元素复制到左指针left 的位置,然后右指针 right 左移一位。如果赋值过来的元素恰好也等于val,可以继续把右指针right 指向的元素的值赋值过来(左指针left 指向的等于val 的元素的位置继续被覆盖),直到左指针指向的元素的值不等于val 为止。根据快慢法则,走的快的一定会追上走得慢的。对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。.......
原创
发布博客 2022.08.03 ·
1906 阅读 ·
2 点赞 ·
0 评论 ·
18 收藏

字符串相关题目

对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。将整个字符串都反转过来,那么单词的顺序指定是倒序了,只不过单词本身也倒序了,那么再把单词反转一下,单词不就正过来了。因为字符串也是一种数组,所以元素在内存中是连续分布,这就决定了反转链表和反转字符串方式上还是有所差异的。那么反转字符串依然是使用双指针的方法,只不过对于字符串的反转,其实要比链表简单一些。最后就可以得到左旋n的目的,而不用定义新的字符串,完全在本串上操作。...
原创
发布博客 2022.08.03 ·
237 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

KMP算法详解

说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP写过KMP,一定都写过next数组,那么这个next数组究竟是个啥呢?next数组就是一个前缀表(prefix table)。前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。............
原创
发布博客 2022.08.02 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java集合体系

集合与数组的区别(1)长度区别集合长度可变,数组长度不可变(2)内容区别集合可存储不同类型元素,数组存储只可单一类型元素(3)元素区别集合只能存储引用类型元素,数组可存储引用类型,也可存储基本类型Java集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组。在这里主要讲一些我们平常很常用的一些接口和一些实现类。Java集合可分为Collection和Map两种体系Collection接口单列数据,定义了存取一组对象的方法的集合Map接口。.........
原创
发布博客 2022.07.29 ·
4762 阅读 ·
5 点赞 ·
0 评论 ·
59 收藏

滑动窗口方法

3、此时,我们停止增加right,转而不断增加left指针缩小窗口[left,right),直到窗口中的字符串不再符合要求(不包含T中的所有字符了)。左右指针轮流前进,窗口大小增增减减,窗口不断向右滑动,这就是「滑动窗口」这个名字的来历。如果不存在符合条件的子数组,返回0。在暴力解法中,是一个for循环滑动窗口的起始位置,一个for循环为滑动窗口的终止位置,用两个for循环完成了一个不断搜索区间的过程。窗口的结束位置如何移动窗口的结束位置就是遍历数组的指针,也就是for循环里的索引。......
原创
发布博客 2022.07.28 ·
2018 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

哈希表解题方法

总结一下,当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!httpshttpshttpshttpshttpshttps。.....................
原创
发布博客 2022.07.28 ·
769 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

【LeetCode】设计链表

下面采用的设置一个虚拟头结点。
原创
发布博客 2022.07.22 ·
187 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

【LeetCode】链表相加 进位

开辟新的链表空间 ListNode pre = new ListNode(0) pre为头节点指针 最后返回的是return pre.next pre.next指向结果链表的首元节点 不使用头结点,直接返回结果链表方法
原创
发布博客 2022.07.14 ·
424 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

【数据结构】排序(直接插入、折半插入、希尔、冒泡、快速、直接选择、堆、归并、基数排序)

排序:将一组杂乱无章的数据按一定规律顺次排列起来。即,将无序序列的数据节点包含多个数据域,那么排序往往是针对其中某个域而言。 1.按数据存储介质可分为:内部排序:数据量不大、数据在内存,无需内外存交换数据外部排序:数据量较大、数据在外存(文件排序)。外部排序时,要将数据分批调入内存来排序,中间结果还要及时放入外存,显然外部排序要复杂的多。2.按比较器个数可分为:串行排序:单处理机(同一时刻比较一对元素)并行排序:多处理机(同一时刻比较多对元素)3.按主要操作可分为:比较排序:用比较的方法。 插入排序、交换
原创
发布博客 2022.07.13 ·
5673 阅读 ·
2 点赞 ·
0 评论 ·
48 收藏

【LeetCode】二叉树的遍历(Java)--递归、迭代、Morris

方法1:递归方法思路与算法首先我们需要了解什么是二叉树的前序遍历:按照访问根节点——左子树——右子树的方式遍历这棵树,而在访问左子树或者右子树的时候,我们按照同样的方式遍历,直到遍历完整棵树。因此整个遍历过程天然具有递归的性质,我们可以直接用递归函数来模拟这一过程。定义 preorder(root) 表示当前遍历到 root 节点的答案。按照定义,我们只要首先将 root 节点的值加入答案,然后递归调用 preorder(root.left) 来遍历 root 节点的左子树,最后递归调用 preorder(
原创
发布博客 2022.07.08 ·
1212 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

【LeetCode】合并

方法一:暴力解法当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位。首先,我们设定一个哨兵节点 prehead ,这可以在最后让我们比较容易地返回合并后的链表。我们维护一个 prev 指针,我们需要做的是调整它的 next 指针。然后,我们重复以下过程,直到 l1 或者 l2 指向了 null :如果 l1 当前节点的值小于等于 l2 ,我们就把 l1 当前的节点接在 prev 节点的后
原创
发布博客 2022.07.08 ·
330 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

【LeetCode】求和

使用「竖式」计算十进制的加法的方式:1.两个「加数」的右端对齐;2.从最右侧开始,依次计算对应的两位数字的和。如果和大于等于 10,则把和的个位数字计入结果,并向前面进位。3.依次向左计算对应位置两位数字的和,如果有进位需要加上进位。如果和大于等于 10,仍然把和的个位数字计入结果,并向前面进位。4.当两个「加数」的每个位置都计算完成,如果最后仍有进位,需要把进位数字保留到计算结果中。在代码中需要注意的有:1.本题给出的二进制数字是字符串形式,不可以转化成 int 型,因为可能溢出;2.两个「加数
原创
发布博客 2022.07.06 ·
775 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

【Java】QueryWrapper方法解释

继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取.queryWrapper.lt()——小于queryWrapper.le()——小于等于queryWrapper.gt()——大于queryWrapper.ge()——大于等于queryWrapper.eq()——等于queryWrapper.ne()——不等于queryWra
转载
发布博客 2022.06.20 ·
49990 阅读 ·
39 点赞 ·
0 评论 ·
169 收藏

【Java项目实战】瑞吉外卖-07 移动端开发(包含其他未实现功能)

目前市面上有很多第三方提供的短信服务,这些第三方短信服务会和各个运营商(移动、联通、电信)对接,只需要注册成为会员并且按照提供的开发文档进行调用就可以发送短信。阿里云短信服务介绍短信服务(Short Message Service)是广大企业客户快速触达手机用户所优选使用的通信能力。调用API或用群发助手,即可发送验证码、通知类和营销类短信;国内验证短信秒级触达,到达率最高可达99%;国际/港澳台短信覆盖200多个国家和地区,安全稳定,广受出海企业选用。使用阿里云短信服务发送短信,可以参照官方提供的文档即可
原创
发布博客 2022.06.20 ·
2581 阅读 ·
11 点赞 ·
2 评论 ·
25 收藏

【Java项目实战】瑞吉外卖-06 套餐管理业务开发(包含修改套餐和单个/批量停售和启售方法)

套餐就是菜品的集合。后台系统中可以管理套餐信息,通过新增套餐功能来添加一个新的套餐,在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品,并且需要上传套餐对应的图片,在移动端会按照套餐分类来展示对应的套餐。新增套餐,其实就是将新增页面录入的套餐信息插入到setmeal表,还需要向setmeal_dish表中插入套餐和菜品关联数据,所以在新增套餐时,涉及到两个表:setmeal(套餐表) setmeal_dish(套餐菜品关系表)所需要的类和接口:实体类SetmealDish、SetmealDto;Mapp
原创
发布博客 2022.06.15 ·
4395 阅读 ·
4 点赞 ·
2 评论 ·
14 收藏
加载更多