自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之红黑树、B树、B+树

红黑树红黑树的介绍红黑树是一种特殊的二叉搜索树红黑树的约束每个节点要么是红色,要么是黑色根节点是黑色的每个叶子节点(特指为NULL)为黑色如果一个节点是红色的,那么他的子节点必须是黑色的任意一个节点 到 该节点的所有叶子节点的路径 上的黑色节点数目是相同的这些约束强制了红黑树的关键性质: 从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。红黑树和AVL树相比:红黑树是一种弱平衡二叉树,所以对于相同节点的两种树,AVL树的高度往往小于红黑树。但是在

2021-03-22 17:10:10 328

原创 数据结构之排序

排序口诀:情绪不稳定,快些选一堆好友聊天吧。快速排序、希尔排序、选择排序、堆排序是不稳定的排序。前两种是基于插入的排序;接下来两种是基于交换的排序;接下来两种是基于选择的排序。插入排序直接插入排序是【稳定】的排序。适用于顺序和链式适用于【基本有序且数据量不大】的情况最好的时间复杂度是O(n),最坏和平均时间复杂度是O(n的平方)额外的空间复杂度是O(1)private void insertSort(int[] nums, int left, int right

2021-03-22 17:08:16 171

原创 LeetCode之二叉树

LeetCode之二叉树一、二叉树226. 翻转二叉树114. 二叉树展开为链表116. 填充每个节点的右指针654. 最大二叉树105. 根据前序和中序构建二叉树106. 根据后序和中序构建二叉树652. 寻找重复的子树236. 二叉树的最近公共祖先222. 计算完全二叉树的节点数297. 二叉树的序列化与反序列化二、二叉搜索树230. BST中第k小的元素538. 把BST转换为累加树98. 验证BST700. 搜索BST中的某个节点701. 添加节点到BST中450. 删除BST中的某个节点96. 不

2021-03-17 13:49:17 161

原创 LeetCode动态规划之背包问题

LeetCode动态规划之背包问题0-1背包问题给一个可以装重量为M的背包,和N个物品,每个物品有重量和价值两种属性,分别存放在数组wt[i]和val[i]中,请问使用这个背包,最多能装多少价值的物品?public int maxVal(int M, int N, int[] wt, int[] val) { //dp[i][j]表示 对于前i个物品,承重为j的背包可以存储的最大价值 int[][] dp = new int[N + 1][M + 1]; //遍历所有的状态

2021-03-14 23:30:50 190

原创 LeetCode动态规划之贪心算法

LeetCode动态规划之贪心算法贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法还需要满足【贪心选择性质】什么是贪心选择性质呢,简单说就是:每一步都做出一个局部最优的选择,最终的结果就是全局最优。比如你面前放着 100 张人民币,你只能拿十张,怎么才能拿最多的面额?显然每次选择剩下钞票中面值最大的一张,最后你的选择一定是最优的。目录LeetCode动态规划之贪心算法55. 跳跃游戏45. 跳跃游戏 II55. 跳跃游戏//贪心算法public boolean canJum

2021-03-14 22:20:13 166

原创 LeetCode之动态规划:子序列问题

LeetCode之动态规划:子序列问题300. 最长递增子序列子序列是指:由数组中不连续,但相互顺序不变的元素组成的序列。dp数组的定义:dp[n]表示以nums[n]结尾的最长递增子序列//O(n2)public int lengthOfLIS(int[] nums) { int n = nums.length; //dp[n]表示以nums[n]结尾的最长递增子序列 int[] dp = new int[n]; //初始化,每个以自己为结尾的递增子序列至少为1

2021-03-14 21:58:22 193

原创 LeetCode之动态规划

LeetCode之动态规划首先推荐一个GitHub项目:labuladong。本文是我在做labuladong算法小抄中动态规划题的相关源码。动态规划的使用场景:动态规划问题的一般形式是求最值,比如最长递增子序列等等。动态规划的核心问题是穷举。而动态规划的穷举有一个特别之处:存在【重叠子问题】,这样就可以使用一个备忘录或dp数组来保存之前子问题的结果,优化穷举过程。另外,动态规划问题一定会有【最优子结构,子问题之间互相独立,互不干扰】,也就是说:通过求解子问题的最值,我们可以进一步推导出原文题

2021-03-13 00:22:35 127

原创 LeetCode之链表

首先推荐一个GitHub项目:labuladong。本文是我在做labuladong算法小抄中链表题目的相关源码。处理链表问题通常可以有迭代法和递归法两种。迭代法思路比较简单,但是写法通常比较复杂;而递归法的思路相对较难,但是写法通常比较简单。在直接做LeetCode之前,先实现几个简单问题的迭代法和递归法。问题1:翻转整条单链表方法一:迭代法public ListNode reverse(ListNode head) {//翻转整条单链表 ListNode pre, cur, nxt;.

2021-03-10 22:57:46 57

原创 LeetCode之LFU缓存机制

LeetCode之LFU缓存机制请你为 最不经常使用(LFU)缓存算法设计并实现数据结构。实现 LFUCache 类:class LFUCache { //用数据结构的容量 capacity 初始化对象 public LFUCache(int capacity) { } //如果键存在于缓存中,则获取键的值,否则返回 -1。 public int get(int key) { } // 如果键已存在,则变更其值;如果键不存在,请

2021-03-09 16:38:24 93

原创 LeetCode之LRU缓存机制

LeetCode之LRU缓存机制题目来源于Leetcode146.LRU 缓存机制。运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制 。实现 LRUCache 类:class LRUCache { //LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存 public LRUCache(int capacity) { } //int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的

2021-03-09 15:57:05 212

原创 Java第四部分:反射

Java第四部分:反射本博客用以记录我在学习过程中的笔记,也可以分享给有需要的人。学习内容和时间:JavaWeb课程(视频来自于b站Idea黑马)、2020年11月。反射:框架设计的灵魂框架:半成品软件。我们可以在框架的基础上进行软件开发,简化编码。反射:将类的各个组成部分封装为其他对象,这就是反射机制。好处:可以在程序运行过程中,操作这些对象;可以降低程序的耦合性,提高程序的可扩展性。获取Class对象的方式:Class.forName("全类名"):将字节码

2020-11-24 13:04:08 83

原创 Go语言 Golang学习笔记

Golang笔记这个学期选了Go语言与分布式开发课程,这篇博客是准备期末考试时所总结的笔记,内容比较基础。参考了github上的the-way-to-go。 Golang笔记第一部分:基本语法变量常量条件语句if条件语句switch循环语句forgotobreak整型复数字符类型字符串类型第二部分:集合数组切片slice映射map第三部分:函数基本格式可变参数函数函数类型匿名函数闭包defer关键字第四部分:结构体基本特点基本格式初始化访问方法匿名字段嵌套结构体方法第五部分:接口接口的命名格式匿名接口接

2020-11-18 14:52:26 283

原创 Java第三部分:IO流

Java第三部分:IO流 Java第三部分:IO流第一章、IO流1.1 输入流和输出流1.2 字节流1.2.1 字节输出流【OutputStream】1.2.2 文件字节输出流【FileOutputStream】1.2.3 字节输入流【InputStream】1.2.4 文件字节输入流【FileInputStream】1.3 字符流1.3.1 字符输入流【Reader】1.3.2 FileReader类1.3.3 字符输出流【Writer】1.3.4 FileWriter类第二章、属性集(Properti

2020-11-11 22:16:56 88

原创 Leetcode1640. 数组匹配(字符串匹配KMP算法)

这里写目录标题Leetcode1640. 数组(字符串)匹配暴力匹配KMP算法Leetcode1640. 数组(字符串)匹配题目大意就是:有一个整型数组int [] arr,还有一个整型数组的数组 int[ ][ ] pieces。要求判断:适当地选取int[ ][ ] pieces中的数组,能否填充完整int [] arr。可以则返回true,不能返回false。(注意:题目中已经说明int[ ][ ] pieces数组中的元素是不重复的!)我自己的理解:这道题目的关键是数组(字符串)匹配。首先

2020-11-06 12:33:06 329

原创 Java第二部分:集合

Java第二部分:集合集合是Java中提供的一种容器,可以用来存储多个数据。集合和数组的区别:数组长度固定,集合长度可变;数组存储同一个类型的元素,既可以存储基本类型的数据,可以存储对象;集合只能用来存储对象,而且对象的类型可以不一致。注意事项: Collection集合中没有定义带索引的方法。List集合:特点:有索引的、可以存储重复元素、存储有序;1、ArrayList集合【重点】:底层是数组实现的,查询快、增删慢;2、LinkedList集合【次重点】:底层是链表实现的,查询慢、

2020-11-04 22:54:00 89

原创 Java第一部分:Java基本语法

JavaSE个人学习笔记(2020年10月)这是我第一次写博客,用以记录我在学习过程中的笔记,也可以分享给有需要的人。背景:2020年9月,作为跨考生进入浙江大学软件工程专业读研。目标:时间:两年半毕业之后;职位:Java后端开发;能够顺利入职大厂,找到心仪的工作。学习内容和时间:JavaSE课程(视频来自于b站Idea黑马)、2020年10月。文档内容:在JavaSE课程结束之后,回顾一下30天的所学所得,将重要的笔记内容再记录一遍。目录JavaSE个人学习笔记(2020年10月)第一部

2020-11-03 22:22:19 148

空空如也

空空如也

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

TA关注的人

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