自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java实现十大经典排序算法之快速排序

快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种。在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基准元素左边的所有元素均小于它,右边的元素均大于它,重复以上过程递归地对左右子集合进行排序。平均时间复杂度,最坏时间复杂度为O(n2)

2023-08-04 19:22:58 1035 1

原创 浅谈设计模式之单例模式

单例模式属于创建型模式,它提供了一种创建对象的最佳方式。单例模式指的是,该类负责创建自己的对象,并且保证该。该类提供了一种访问其唯一对象的方法,外部需要调用该类的对象可以通过方法获取,不需要实例化类的对象。

2023-07-19 16:40:24 758

原创 浅谈设计模式之工厂模式

工厂模式属于创建型模式,是Java中最常见的设计模式之一。工厂模式提供了一种将对象的实例化过程封装在工厂类的方式,通过工厂模式可以屏蔽掉对象的创建过程,对外提供了一种统一的接口来创建不同类型的对象。

2023-07-17 16:16:45 564

原创 Java实现十大经典排序算法之选择排序

选择排序是一种不稳定的排序算法,时间复杂度为O(n2)。其算法原理是首先在未排序的序列中找到最小(最大)的元素,将其交换到排序序列的起始位置,接着继续从剩下的为排序序列中中找到最小(最大)的元素,将其交换到已排序的序列末尾。重复以上过程,直到所有元素均排序完成。

2023-05-15 16:22:39 115 1

原创 LeetCode43. 字符串相乘(Java解法)

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数。示例 1:输入: num1 = “2”, num2 = “3”输出: “6”示例 2:输入: num1 = “123”, num2 = “456”输出: “56088”题目来源:力扣(

2023-04-27 15:01:58 459

原创 Java实现十大排序算法之冒泡排序

冒泡排序是一种简单且稳定的排序算法。冒泡排序需要反复的遍历待排序的数组,然后一次比较两个相邻的元素,若它们的顺序错误则将其交换过来,每一次遍历都可以固定一个最顶端的元素(最大或最小的元素),反复遍历直到所有的元素全部找到自己的位置即可。

2023-04-17 16:06:36 310

原创 力扣Top100题之两数相加(Java解法)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.

2023-02-27 20:57:56 798

原创 记录一次Spring中自动注入JedisPool 失败空指针导致Could not get a resource from the pool的问题

问题如下,注入JedisPool后台产生空指针问题错误:Could not get a resource from the pool。

2023-01-10 21:12:51 546

原创 Java开发之短信验证码API申请及工具类封装

【代码】短信验证码API工具类封装(可直接使用)

2023-01-09 21:13:29 439

原创 LeetCode70. 爬楼梯(Java解法——使用完全背包求解)

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2输出:2解释:有两种方法可以爬到楼顶。示例 2:输入:n = 3输出:3解释:有三种方法可以爬到楼顶。3. 1 阶 + 1 阶 + 1 阶4. 1 阶 + 2 阶5. 2 阶 + 1 阶。

2023-01-06 10:57:55 225

原创 LeetCode62. 不同路径(java解法——动态规划)

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。示例 3:输入:m = 7, n = 3输出:28示例 4:输入:m = 3, n = 3。

2022-12-15 10:35:38 778

原创 LeetCode56. 合并区间(Java贪心解法)

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

2022-12-01 21:38:25 424

原创 LeetCode435. 无重叠区间

给定一个区间的集合 intervals ,其中 intervals[i] = [starti, endi]。返回 需要移除区间的最小数量,使剩余区间互不重叠。示例 1:输入: intervals = [[1,2],[2,3],[3,4],[1,3]]输出: 1解释: 移除 [1,3] 后,剩下的区间没有重叠。示例 2:输入: intervals = [ [1,2], [1,2], [1,2] ]输出: 2解释: 你需要移除两个 [1,2] 来使剩下的区间没有重叠。

2022-11-30 21:29:22 179

原创 LeetCode135. 分发糖果(贪心算法)

n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。请你给每个孩子分发糖果,计算并返回需要准备的 最少糖果数目。

2022-11-24 20:45:05 781

原创 LeetCode1005. K 次取反后最大化的数组和

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:选择某个下标 i 并将 nums[i] 替换为 -nums[i]。重复这个过程恰好 k 次。可以多次选择同一个下标 i。以这种方式修改数组后,返回数组 可能的最大和。示例 1:输入:nums = [4,2,3], k = 1输出:5解释:选择下标 1 ,nums 变为 [4,-2,3]。示例 2:输入:nums = [3,-1,0,2], k = 3输出:6。

2022-11-22 22:17:01 463

原创 LeetCode53. 最大子数组和(贪心算法)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6。示例 2:输入:nums = [1]输出:1示例 3:输入:nums = [5,4,-1,7,8]输出:23。

2022-11-14 11:52:10 546

原创 SpringBoot整合Swagger接口生成文档详细步骤

Swagger本质上是一种用于描述使用JSON表示的RESTful API的接口描述语言。Swagger与一组开源软件工具一起使用,以设计、构建、记录和使用RESTful Web服务。Swagger包括自动文档,代码生成和测试用例生成。2 创建配置文件自定义文档样式3 在controller接口中注明接口文档的访问地址:http://localhost:8080/doc.html@Api:用在请求的类上,表示对类的说明tags=“说明该类的作用,可以在UI界面上看到的注解”value=“该参数

2022-11-07 18:06:35 801

原创 Springboot2.x开启跨域配置详解

跨域:浏览器同源策略 1995年,同源政策由 Netscape 公司引⼊浏览器。⽬前,所有浏览器都实⾏这个政策。最初,它的含义是指,A⽹⻚设置的 Cookie,B⽹⻚不能打开,除⾮这两个⽹⻚"同源"。所谓"同源"指的是"三个相同"。协议相同 http https域名相同 www.xdclass.net端⼝相同 80 81⼀句话:浏览器从⼀个域名的⽹⻚去请求另⼀个域名的资源时,域名、端⼝、协议任⼀不同,都是跨域.

2022-11-07 18:01:37 506

原创 利用Apache POI框架操作Excel表格及工具类的提取

开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中,操作Excel目前有两个框架,一个是apache 的poi, 另一个是 Java Excel。Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。

2022-11-07 17:55:39 549

原创 LeetCode46. 全排列(Java)

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]来源:力扣(LeetCode)

2022-11-02 15:08:47 210

原创 LeetCode90. 子集 II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。示例 1:输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]]示例 2:输入:nums = [0]输出:[[],[0]]提示:来源:力扣(LeetCode)

2022-10-31 20:08:26 184

原创 关于解决maven项目依赖报红无法下载的那件事

最近导入Flink源码,本以为就是导入代码没什么大问题,谁知道结果是这样:这一大片的依赖爆红属实让我感到头疼,于是我上网查了很多博客,试过了不下十种方法吧,有更换镜像源的,有maven配置相关的,还有说依赖版本问题的等,我一一试过之后仍然无法解决问题。但是我依然没有放弃啊,继续各种查资料,尝试各种方法,直到被这个问题折磨了两天之后,终于找到一种方法能够有效的解决我的问题。如果有小伙伴有同样的问题可以尝试下以下的方法。

2022-10-20 15:44:00 1526

原创 LeetCode108. 将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]

2022-10-18 15:35:31 124

原创 LeetCode450. 删除二叉搜索树中的节点

给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例 1:输入:root = [5,3,6,2,4,null,7], key = 3输出:[5,4,6,2,null,null,7]解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。

2022-10-13 15:33:13 84

原创 LeetCode701. 二叉搜索树中的插入操作

给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。返回插入后二叉搜索树的根节点。输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。你可以返回 任意有效的结果。

2022-10-11 14:37:48 68

原创 LeetCode98. 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,null,null,3,6]输出:false解释:根节点的值是 5 ,但是右子节点的值是 4。来源:力扣(LeetCode)

2022-10-06 15:53:34 141

原创 LeetCode700. 二叉搜索树中的搜索

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。返回以该节点为根的子树。如果节点不存在,则返回 null。示例 1:输入:root = [4,2,7,1,3], val = 2输出:[2,1,3]示例 2:输入:root = [4,2,7,1,3], val = 5输出:[]来源:力扣(LeetCode)

2022-10-06 14:48:37 74

原创 LeetCode617. 合并二叉树

给你两棵二叉树: root1 和 root2。想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。返回合并后的二叉树。注意: 合并过程必须从两个树的根节点开始。示例 1:输入:root1 = [1,3,2,5], root2 = [2,1,3,null,4,null,7]

2022-10-06 09:06:19 96

原创 LeetCode513. 找树左下角的值

给定一个二叉树的根节点 root,请找出该二叉树的最底层最左边节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7来源:力扣(LeetCode)

2022-10-02 15:36:15 205

原创 LeetCode257. 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]示例 2:输入:root = [1]输出:[“1”]来源:力扣(LeetCode)

2022-09-28 16:37:01 42

原创 LeetCode110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true来源:力扣(LeetCode)

2022-09-27 15:14:17 252

原创 LeetCode222. 完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例 2:输入:root = []输出:0示例 3:输入:root = [1]输出:1来源:力扣(LeetCode)

2022-09-26 21:42:16 198

原创 LeetCode104. 二叉树的最大深度和N叉树的最大深度

给定一个二叉树(N叉树),找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最大深度 3。来源:力扣(LeetCode)

2022-09-25 14:54:09 238

原创 LeetCode226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]来源:力扣(LeetCode)

2022-09-24 15:34:28 122

原创 LeetCode429. N 叉树的层序遍历

给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]

2022-09-24 14:45:20 77

原创 LeetCode102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]来源:力扣(LeetCode)

2022-09-23 16:51:11 296

原创 Java数据结构之二叉树的基本操作

二叉树的基本操作

2022-09-23 15:29:35 330

原创 LeetCode347. 前 K 个高频元素

public Set entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。就是返回一个集合,集合里存放的是对象,创建对象的类有两个属性,分别是 键和值 也即键值对。其中Entry是属于Map的静态内部类,在创建Map对象的时候就会同时创建一个Entry对象,用来记录键与值的映射关系。

2022-09-22 14:38:03 145

原创 LeetCode239. 滑动窗口最大值

给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回 滑动窗口中的最大值。

2022-09-21 16:05:17 214

原创 LeetCode150. 逆波兰表达式求值

根据逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 两个整数之间的除法只保留整数部分。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。

2022-09-20 15:20:52 270

空空如也

空空如也

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

TA关注的人

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