首页
zhangz1w3nCode
取消

堆 🟧概述 🔻含义: 堆是通过数组化二叉树 同时通过构建堆和重建堆 来实现获取最大值和最小值的数据结构 🔻试用场景: 查找最大值和最小值、排序、频率、topK问题 🔻时间复杂度: O(nlogN) 🔻空间复杂度: O(1) 🔻注意事项: 🔸是使用大根堆还是小根堆 🟧模板 📌优先队列 class Solution { public int heap(int[...

滑动窗口

滑动窗口 🟧概述 🔻含义: 使用一个零时变量记录过程值 当这个过程值满足题目要求时候 就收敛窗口直到过程值不满足题目要求 否则一直扩大窗口统计值 🔻试用场景: 查找连续正数数组或字符串以及子数组、子串问题 🔻时间复杂度: O(n²)->O(n) 🔻空间复杂度: O(n) 🔻注意事项: 🔸满足滑动窗口的单调性 🔸过程变量的选择(数组、普通变量、容器) 收敛扩大窗口的时机(...

回溯

回溯 🟧概述 🔻含义: 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就 回溯 返回,尝试别的路径 🔻试用场景: 排列组合、优化穷举等 🔻时间复杂度: 具体问题具体分析 🔻空间复杂度: 递归枚举需要用到栈 🔻注意事项: 🔸单个path回溯完毕后要删除上一次回溯的节点:path.remove(path.size()-1);...

原地哈希

原地哈希 🟧概述 🔻含义: 数组当作哈希表 通过不同场景(重复整数、缺少整数)选择标记方式(交换或者标记为负数) 判断某个值/几个值 存不存在 🔻试用场景: 数组的所有数字都是从0开始或者1开始(正数) 并且对空间复杂度要求为O(1) 🔻时间复杂度: O(n) 🔻空间复杂度: O(n) 🔻注意事项: 🔸数字必须为正数 🔸不能破坏单调性 🟧模板 📌通用模板 public ...

单调栈

单调栈 🟧概述 🔻含义:栈底到栈顶维持一个单调有序的栈 单调栈就是栈里的数据递增或递减存放,也就是要做到有序,如果待入栈数据不符合栈里数据的有序性,则栈顶出栈,一直到栈里数据有序,最后将当前遍历到的元素栈插入到栈顶。 我们将当前还没得到答案的下标暂存于栈内,从而实现「被动」更新答案。也就是说,栈内存放的永远是还没更新答案的下标。 每次将当前遍历到的下标存入栈内,将当前下标存入栈内前...

Springmvc🤖️

SpringMVC 一.MVC 1.MVC的解释: ​ 🌟MVC模式是一种架构思想 ​ 1⃣️ M: Model-模型 指的是模型数据 即数据库的数据 ​ 2⃣️ V:View-试图 指的是前端的视图 ​ 3⃣️ C:Controller-控制器 指的是控制器 用于连接前端视图层和后端的数据层 还有 把后台的数据进行逻辑处理后返回给前端的视图层 2.MVC的...

Spring🍃

Spring(IOC、AOP) 一.IOC 1.概念 ​ IOC是Inversion Of Control 意思为控制翻转 指对Java Bean 对象的控制 由程序员 反转到Spring容器 ​ 在Spring容器中 Bean对象被Spring容器管理着 Bean对象有着严格的生命周期 Bean对象存储在一个Map集合中 ​ 作用为 降低了耦合度和对象的依赖性 同时让资源容易管理 ...

Redis📦

Redis(原理、持久化和缓存淘汰机制等) 参考书籍📚:《Redis设计与实现》 一.Redis的原理 1.简述 ·基于内存的K-V存储 ​ 数据直接存储在内存 不需要去磁盘进行读取数据 减少磁盘IO 减少至少两次的用户态到内核态到切换 减少cpu的切换 ·工作线程是单线程 ​ 单线程的优势:1.减少线程切换 旧线程的现场的保存和新线程的创建(底层是用户态到内核态的转变) ...

Mysql🔢

XMySQL(事物隔离级别、索引底层原理以及优化等) 参考书籍📚:《MySQL技术内幕》 一.事物的隔离级别 1.总述 ​ 读未提交:什么都防止不了 ​ 读已提交:防止脏读 ​ ==可重复读==:防止脏读和不可重复读==(默认隔离级别)== ​ 串行化: 防止脏读、不可重复读、幻读 ​ 脏读:一个事物读取了另一个事物未提交的操作 ​ 不可重复读:一个事物读取了另一...

Juc💎

JUC(CAS、Volatile、Synchronized以及锁升级等) 参考书籍📚:《Java并发编程的艺术》 一.CAS 1.概述 ​ CAS全称(Compare And Swap) 是一种不使用锁而去实现锁功能的算法 也叫乐观锁、自旋锁 2.为什么出现 ​ 常规使用锁会带来上下文的切换 最终导致用户态到内核态的切换 (多执行一次cpu的切换) 加锁释放锁 死锁 影响执行...