自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 堆的特性与实现

文章目录堆的特性与实现堆的特性堆结构的实现应用一:堆排序应用二:TopK问题堆的特性与实现堆的特性根据堆中元素之间的大小关系,堆可以分为最大堆和最小堆。对于最大堆,某个节点的值总是大于等于其子节点的值;对于最小堆,某个节点的值总是小于等于其子节点的值。堆中各个节点组合起来是一颗完全二叉树。但是真正存储堆结构的时候,不是用树结构,而是采用数组来存储各个节点的值,这是因为完全二叉树可以很方便存储在数组中。所以存在两种视角来看待堆结构:二叉树的视角,把堆看成是一棵完全二叉树,但是这棵完全二叉树的节点之

2021-06-20 23:11:15 324 2

原创 Java8中的Stream API的基本概念和基本使用

学习《Java 8实战》第二部分,对Java 8中的Stream API的基本概念和基本使用做了总结。

2021-04-23 16:58:20 251

原创 Java8中的Lambda表达式以及相关知识点

学习《Java 8实战》,对第三章中的Java 8中的新特性--函数式接口、Lambda表达式、函数引用做了简单的学习笔记。

2021-04-19 14:43:43 245

原创 LRU和LFU的底层原理和代码实现

分析LRU和LFU的底层数据结构,以及Java代码实现过程。

2021-04-13 20:10:01 509

原创 Morris遍历的图示理解以及代码实现

文章目录Morris遍历的图示理解以及代码实现1、遍历规则2、复杂度分析3、代码实现以及分析4、Morris遍历实现前中后序遍历Morris遍历的图示理解以及代码实现1、遍历规则假设当前正在遍历的节点是cur,那么cur的移动规则如下:如果cur没有左孩子,则cur向右移动,即cur = cur.right。如果cur有左孩子,找到cur左子树上最右边的节点,将这个节点记为mostRight,根据mostRight的情况继续分为下面两种情况:如果mostRight的右孩子为null,则让mo

2020-12-22 13:46:18 703 1

原创 单调栈结构及其应用

文章目录单调栈结构及其应用解决的一般问题单调栈的应用:求最大子矩阵的大小单调栈的应用:可以看到烽火的山峰对单调栈结构及其应用解决的一般问题对于一个数组中的每个元素,求出该元素左边比它大同时距离它最近的数,以及该元素右边比它大同时距离它最近的数。暴力法的复杂度在O(n2),要求在O(n)的时间复杂度内完成。压入和弹出数据的规则:对于上面的一般问题,我们让一个栈从栈底到栈顶按从大到小的规则放入数据。从左往右遍历数组,对于一个数组元素num,如果栈为空或者num小于栈顶元素,num直接入栈,此时符合单

2020-12-05 21:42:54 178

原创 滑动窗口的最大值与最小值更新结构

滑动窗口的最大值与最小值更新结构数据结构–单调队列特点:队列中的元素全都是单调递增(或递减)的。应用:解决滑动窗口问题。实现:使用双端队列来实现单调队列的语义,在双端队列的头部和尾部都可以插入和删除元素,通过下面的插入和删除元素的逻辑来实现单调队列的语义。(注:在Java中双端队列Deque接口有两个主要的实现类:ArrayDeque和LinkedList,我们这里使用LinkedList实现类。)插入数据:在队尾插入一个元素,并把该元素前面比它小或者等于它的元素都删除掉。(为什么要删除掉前面小

2020-10-31 12:08:57 294

原创 BFPRT算法的主要步骤和代码实现

文章目录BFPRT算法的主要步骤和代码实现解决的问题解决方案BFPRT算法的步骤BFPRT算法的时间复杂度分析BFPRT算法的代码实现BFPRT算法的主要步骤和代码实现解决的问题求一个无序数组中第k小的数。约定:k是从1开始计数的,即最小的那个数是第一小的数。解决方案1、快速排序:平均时间复杂度O(nlogn),最坏时间复杂度O(n2)2、堆:时间复杂度O(nlogk)3、快速选择:平均时间复杂度O(n),最坏时间复杂度O(n2)例如:1, 2, 3, 4, 5,如果要求最5小的数,使用快速

2020-10-23 09:39:41 415

原创 Manacher算法的图示理解和代码实现

文章目录Manacher算法的图示理解和代码实现需要解决的问题第一种:暴力解法第二种:Manacher算法求解Manacher算法中的三个概念:Manacher算法中分四种情况讨论Manacher算法的代码实现Manacher算法的应用Manacher算法的图示理解和代码实现需要解决的问题寻找一个字符串中最长的回文子串。第一种:暴力解法思想:以i为起点,向两边扩展,寻找以i为中心的最长回文子串。复杂度:O(n2)补充:回文的形式有奇数回文和偶数回文,比如1221是偶数回文,12321是奇数回文

2020-10-19 15:18:02 1363 1

原创 KMP算法的图示理解和代码实现

文章目录KMP算法的图示理解和代码实现解决的问题理解KMP算法的前置知识:部分匹配表,即next数组。KMP算法的图示:关于next数组的求解示意图:KMP算法代码实现KMP算法的图示理解和代码实现解决的问题字符串包含问题,在str1中是否存在str2这样的子串,如果存在返回子串开始的位置。注意:子串和子序列的区别。理解KMP算法的前置知识:部分匹配表,即next数组。next数组的值:表示在某个位置i,对于i前面的字符串,这个字符串的前缀集合和后缀集合中,前缀和后缀相等时候的最大长度。例如:对

2020-10-18 17:04:05 213 2

原创 LeetCode刷题汇总篇

数据结构相关LeetCode精选题之链表LeetCode精选题之树LeetCode精选题之栈和队列LeetCode精选题之数组和矩阵LeetCode精选题之链表字符串LeetCode精选题之链表哈希表算法思想LeetCode精选题之双指针LeetCode精选题之贪心思想LeetCode精选题之二分查找LeetCode精选题之排序、分治LeetCode精选题之搜索(BFS/DFS/回溯法)LeetCode精选题之动态规划01LeetCode精选题之动态对话02LeetCode精选

2020-08-20 19:15:09 375

原创 LeetCode精选题之数学

文章目录LeetCode精选题之数学1 计数质数--LeetCode2042 七进制数--LeetCode5043 数字转换为十六进制数--LeetCode4054 Excel表列名称--LeetCode1685 阶乘后的零--LeetCode1726 二进制求和--LeetCode677 字符串相加--LeetCode4158 最少移动次数使数组元素相等 II--LeetCode462(Medium)9 多数元素--LeetCode16910 有效的完全平方数--LeetCode36711 3的幂--Le

2020-08-19 21:22:33 251

原创 LeetCode精选题之数组和矩阵

文章目录LeetCode精选题之数组和矩阵1 移动零--LeetCode2832 重塑矩阵--LeetCode5663 最大连续1的个数--LeetCode4854 搜索二维矩阵 II--LeetCode240(Medium)5 有序矩阵中第K小的元素--LeetCode378(Medium)6 错误的集合--LeetCode6457 寻找重复数--LeetCode287(Medium)8 优美的排列 II--LeetCode667(Medium)9 数组的度--LeetCode69710 托普利茨矩阵--

2020-08-15 15:05:21 373

原创 LeetCode精选题之排序、分治

文章目录LeetCode精选题之排序、分治排序1 数组中的第K个最大元素--LeetCode215(Medium)2 前 K 个高频元素--LeetCode347(Medium)3 根据字符出现频率排序--LeetCode451(Medium)4 颜色分类--LeetCode75(Medium)分治1 为运算表达式设计优先级--LeetCode241(Medium)2 不同的二叉搜索树II--LeetCode95(Medium)LeetCode精选题之排序、分治参考资料:CyC2018的LeetCode

2020-08-15 14:58:41 190

原创 LeetCode精选题之字符串

文章目录LeetCode精选题之字符串1 有效的字母异位词--LeetCode2422 最长回文串--LeetCode4093 同构字符串--LeetCode2054 回文子串--LeetCode647(Medium)5 回文数--LeetCode96 计数二进制子串--LeetCode696LeetCode精选题之字符串参考资料:CyC2018的LeetCode题解1 有效的字母异位词–LeetCode242给定两个字符串 s和 t,编写一个函数来判断t是否是 s的字母异位词。示例 1:输入:

2020-08-01 15:20:02 267

原创 LeetCode精选题之哈希表

文章目录LeetCode精选题之哈希表1 两数之和--LeetCode12 存在重复元素--LeetCode2173 存在重复元素II--LeetCode2194 存在重复元素III--LeetCode220(Medium)5 最长和谐子序列--LeetCode5946 最长连续序列--LeetCode128(Hard)LeetCode精选题之哈希表总结:1、在解题中对Set和Map的使用,Set只能存储元素,如果要保存位置,次数等信息就需要使用Map。2、灵活选择键key,应该根据题目来定,比如距

2020-07-30 20:45:13 410

原创 LeetCode精选题之二分查找

文章目录LeetCode精选题之二分查找1 x的平方根--LeetCode692 寻找比目标字母大的最小字母--LeetCode7443 有序数组中的单一元素--LeetCode540(Medium)4 第一个错误的版本--LeetCode2785 寻找旋转排序数组中的最小值--LeetCode153(Medium)6 在排序数组中查找元素的第一个和最后一个位置--LeetCode34(Medium)7 二分查找总结二分查找的基本问题二分搜索的变种LeetCode精选题之二分查找参考资料:1、Cyc2

2020-07-28 22:17:53 331

原创 LeetCode精选题之双指针

文章目录LeetCode精选题之双指针1 两数之和 II - 输入有序数组--LeetCode1672 平方数之和--LeetCode6333 反转字符串中的元音字母--LeetCode4 验证回文字符串 Ⅱ--LeetCode6805 合并两个有序数组--LeetCode886 环形链表--LeetCode1417 通过删除字母匹配到字典里最长单词--LeetCode524(Medium)LeetCode精选题之双指针参考资料:CyC2018的LeetCode题解1 两数之和 II - 输入有序数组

2020-07-19 10:18:17 228

原创 LeetCode精选题之贪心思想

文章目录LeetCode精选题之贪心思想1 分发饼干--LeetCode4552 无重叠区间--LeetCode435(Medium)3 用最少数量的箭引爆气球--LeetCode452(Medium)4 根据身高重建队列--LeetCode406(Medium)5 买卖股票的最佳时机--LeetCode1216 买卖股票的最佳时机 II--LeetCode1227 种花问题--LeetCode6058 判断子序列--LeetCode392(Medium)9 非递减数列--LeetCode66510 最大子

2020-07-14 22:52:38 324

原创 SpringMVC的基本概念和基本使用

说明:学习笔记是对B站狂神说的SpringMVC视频的整理和总结。参考资料:SpringMVC官方文档5.2.0

2020-07-13 23:20:40 650

原创 代理模式的实例分析

代理模式的实例分析说明:代码以及部分总结来源于狂神说,在此基础上进一步归纳总结。关于动态代理的理解,可以参考末尾的博客链接。代理模式可以分为两类:静态代理动态代理静态代理使用租房的场景来理解代理模式。场景示例如下:角色介绍:抽象角色:一般指的是某个抽象的动作。使用接口或者抽象类来表示。真实角色:被代理的角色。比如:房东。代理角色:代理真实角色,代理真实角色后,还会有一些附属操作,比如:房屋中介除了负责租房外,附属操作是带租户看房子、签合同、维护房子等行为。客户端:访问代理角色的

2020-06-27 08:50:51 1453

原创 LeetCode精选题之动态规划02

文章目录LeetCode精选题之动态规划02背包问题15 分割等和子集--LeetCode416(Medium)16 目标和--LeetCode494(Medium)17 一和零--LeetCode474(Medium)18 零钱兑换--LeetCode322(Medium)19 零钱兑换II--LeetCode518(Medium)20 单词拆分--LeetCode139(Medium)21 组合求和IV--LeetCode377(Medium)股票交易系列问题22 最佳买卖股票时机含冷冻期--LeetC

2020-06-26 14:01:57 296

原创 LeetCode精选题之动态规划01

文章目录LeetCode精选题之动态规划011 爬楼梯--LeetCode702 打家劫舍--LeetCode1983 打家劫舍II--LeetCode213(Medium)4 最小路径和--LeetCode64(Medium)5 不同路径--LeetCode62(Medium)6 区域和检索-数组不可变--LeetCode3037 等差数列划分--LeetCode413(Medium)8 整数拆分--LeetCode343(Medium)9 完全平方数--LeetCode279(Medium)10 解码方

2020-06-26 13:58:35 370

原创 Mybatis的基本概念和基本使用

说明:该学习笔记是对B站狂神说的Mybatis视频的整理和总结。参考资料:Mybatis官方中文文档。

2020-06-23 07:06:26 338

原创 Spring的基本概念和基本使用

文章目录Spring学习笔记Spring概述Spring项目的创建Spring的配置IoC的基本概念由问题引出IoCIoC的本质IoC创建对象的方式依赖注入(DI)Bean的作用域Bean的自动装配使用注解开发前置条件常用注解JavaConfig代理模式静态代理动态代理AOPAOP的实现方式整合MyBatis一般步骤(推荐)SqlSessionDaoSupport事务事务概述事务管理的引入Spring的事务Spring学习笔记说明:学习笔记是对B站狂神说的Spring视频的整理和总结。Spring概述

2020-06-18 22:38:46 211

原创 LeetCode精选题之搜索(BFS/DFS/回溯法)

文章目录LeetCode精选题之搜索(BFS/DFS/回溯法)第一部分:BFS1 二进制矩阵中的最短路径--LeetCode1091(Medium)2 完全平方数--LeetCode279(Medium)3 单词接龙--LeetCode127(Medium)第二部分:DFS1 岛屿的最大面积--LeetCode695(Medium)2 岛屿数量--LeetCode200(Medium)3 朋友圈--LeetCode547(Medium)4 被围绕的区域--LeetCode130(Medium)5 太平洋大西

2020-06-02 12:02:27 428

原创 LeetCode精选题之查找表

文章目录LeetCode精选题之查找表1 两个数组的交集--LeetCode3492 两个数组的交集 II--LeetCode3503 两数之和--LeetCode14 四数相加II--LeetCode454(Medium)5 回旋镖的数量--LeetCode4476 最长连续序列--LeetCode128(Hard)7 存在重复元素II--LeetCode2198 存在重复元素III--LeetCode220(Medium)LeetCode精选题之查找表参考资料:bobo老师慕课网LeetCode

2020-05-27 12:21:58 188

原创 LeetCode精选题之树

文章目录LeetCode精选题之树递归解题1 二叉树的最大深度--LeetCode1042 平衡二叉树--LeetCode1103 二叉树的直径--LeetCode5434 翻转二叉树--LeetCode2265 合并二叉树--LeetCode6176 路径总和--LeetCode1127 路径总和III--LeetCode437**8 另一个数的子树--LeetCode5729 对称二叉树--LeetCode10110 二叉树的最小深度--LeetCode11111 左叶子之和--LeetCode4041

2020-05-22 20:24:20 286

原创 LeetCode精选题之栈和队列

文章目录LeetCode精选题之栈和队列1 用栈实现队列--LeetCode2322 用队列实现栈--LeetCode2253 最小栈--LeetCode1554 用栈实现括号匹配--LeetCode205 每日温度--LeetCode7396 下一个更大元素II--LeetCode5037 二叉树的层序遍历--LeetCode1028 前K个高频元素--LeetCode347LeetCode精选题之栈和队列参考资料:CyC2018的LeetCode题解liuyubobobo的LeetCode课程

2020-05-18 11:49:40 265

原创 戳气球--LeetCode312

戳气球–LeetCode312题目有 n个气球,编号为0到 n-1,每个气球上都标有一个数字,这些数字存在数组 nums中。现在要求你戳破所有的气球。每当你戳破一个气球 i时,你可以获得 nums[left] * nums[i] * nums[right]个硬币。 这里的left和 right代表和 i相邻的两个气球的序号。注意当你戳破了气球 i后,气球 left和气球 right就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设 nums[-1] = nums[n] = 1,但注

2020-05-16 22:11:22 202

原创 二叉树的三种遍历方式(递归和非递归)以及模拟计算机系统栈的遍历方式

二叉树的前序遍历–LeetCode144递归:/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */import java.util.List;import java.util.ArrayList;class

2020-05-16 18:07:38 259

原创 LeetCode精选题之链表

文章目录LeetCode精选题之链表1 相交链表--LeetCode1602 反转链表--LeetCode2063 合并两个有序链表--LeetCode214 删除排序链表中的重复元素--LeetCode835 删除链表的倒数第N个节点--LeetCode196 两两交换链表中的节点--LeetCode247 链表求和--LeetCode4458 回文链表--LeetCode2349 分隔链表--LeetCode72510 奇偶链表--LeetCode328LeetCode精选题之链表参考资料:CyC2

2020-05-14 22:52:45 307

原创 奇怪的打印机--LeetCode664

奇怪的打印机–LeetCode664题目有台奇怪的打印机有以下两个特殊要求:打印机每次只能打印同一个字符序列。每次可以在任意起始和结束位置打印新字符,并且会覆盖掉原来已有的字符。给定一个只包含小写英文字母的字符串,你的任务是计算这个打印机打印它需要的最少次数。示例 1:输入: "aaabbb"输出: 2解释: 首先打印 "aaa" 然后打印 "bbb"。示例 2:输入: "aba"输出: 2解释: 首先打印 "aaa" 然后在第二个位置打印 "b" 覆盖掉原来的字符 'a'。

2020-05-13 10:12:14 292

原创 多边形三角剖分的最低得分--LeetCode1039

多边形三角剖分的最低得分–LeetCode1039题目给定 N,想象一个凸 N边多边形,其顶点按顺时针顺序依次标记为 A[0],A[1],...,A[i],...,A[N-1]。假设您将多边形剖分为 N-2个三角形。对于每个三角形,该三角形的值是顶点标记的乘积,三角剖分的分数是进行三角剖分后所有 N-2个三角形的值之和。返回多边形进行三角剖分后可以得到的最低分。示例 1:输入:[1,2,3]输出:6解释:多边形已经三角化,唯一三角形的分数为 6。示例 2:输入:[3,7,4,5]输出:

2020-05-09 10:14:31 298

原创 统计不同回文子字符串--LeetCode730

统计不同回文子字符串–LeetCode730题目给定一个字符串 S,找出 S 中不同的非空回文子序列个数,并返回该数字与 10^9 + 7的模。通过从 S 中删除 0 个或多个字符来获得子字符序列。如果一个字符序列与它反转后的字符序列一致,那么它是回文字符序列。如果对于某个 i,A_i != B_i,那么 A_1, A_2, ...和 B_1, B_2, ...这两个字符序列是不同的。示例 ...

2020-05-07 11:09:09 207

转载 javadoop:设计模式也可以这么简单

转载一篇javadoop的文章:设计模式也可以这么简单这篇文章对三类设计模式:创建型模式、结构型模式和行为型模式,做了初步的介绍,如果之前没了解过设计模式,这篇文章可以帮你初步了解有哪些设计模式,初步会使用这些设计模式。看完我觉得是非常不错的,所以转载一下。文章目录设计模式也可以这么简单创建型模式简单工厂模式工厂模式抽象工厂模式单例模式建造者模式原型模式创建型模式总结结构型模式代理模式适配器模...

2020-05-06 14:49:32 621

原创 最长回文子序列--LeetCode516

最长回文子序列–LeetCode516题目给定一个字符串s,找到其中最长的回文子序列。可以假设s的最大长度为1000。示例 1:输入:"bbbab"输出:4解释:一个可能的最长回文子序列为 "bbbb"。示例 2:输入:"cbbd"输出:2解释:一个可能的最长回文子序列为 "bb"。思路状态定义dp[i][j]表示 s 的第i个字符到第j个字符组成的子串中,最长的回文...

2020-05-06 10:08:13 193

原创 正则表达式匹配--LeetCode10

正则表达式匹配–LeetCode10题目给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 . 和 *。...

2020-05-05 11:11:29 176

转载 潮汐:[力扣] DP问题分类汇总

力扣中的DP问题分类汇总,总结得挺全的,题目前面的序号就是在力扣中的序号,原文链接:https://zhuanlan.zhihu.com/p/126546914?utm_source=wechat_session&utm_medium=social&utm_oi=56598949003264&from=singlemessage&s_s_i=rIsgHJqZBNaslkK8ImXR1xGA6iybytF5h6TpNyYqU%2FA%3D&s_r=0

2020-05-04 12:08:07 599 1

原创 通配符匹配--LeetCode44

通配符匹配–LeetCode44题目给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *示例:输入:s =...

2020-05-04 11:47:52 133

空空如也

空空如也

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

TA关注的人

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