- 博客(22)
- 收藏
- 关注
原创 【Leetcode】Java:树
目录参考了很多大佬的题解,仅作为自己学习笔记用。235. 二叉搜索树最近祖先236. 二叉树的最近祖先参考资料参考了很多大佬的题解,仅作为自己学习笔记用。235. 二叉搜索树最近祖先题意:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: 节点 2 和节点 8 的最近公共祖先是 6。题解:因为是二叉搜索树,所以数的排列是有顺序可循的。如果 roo
2021-03-25 09:06:16
724
转载 MySQL索引数据结构详解
@TOC索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分
2021-03-18 21:49:48
515
原创 【Leetcode】Java:排序
目录参考了很多大佬的题解,仅作为自己学习笔记用。215. 数组中的第 k 个最大元素(medium)347. 前 k 个高频元素(medium)451. 字符出现频率排序(medium)075. 颜色分类(medium)参考资料参考了很多大佬的题解,仅作为自己学习笔记用。215. 数组中的第 k 个最大元素(medium)题意:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。题解1:求解 TopK 问题,也就是 K
2021-03-17 19:15:17
333
原创 【Leetcode】Java:双指针
目录参考了很多大佬的题解,仅作为自己学习笔记用。167. 两数之和-输入有序数组(easy)633. 两数平方和(medium)345. 反转字符串中的元音字母(easy)680. 验证回文字符串Ⅱ:可以删一个字符(easy)088. 归并两个有序数组到其中一个数组(easy)141. 判断链表是否存在环(easy)524. 删除字母匹配字典里最长单词(medium)参考资料参考了很多大佬的题解,仅作为自己学习笔记用。167. 两数之和-输入有序数组(easy)题意:给定一个已按照 升序排列
2021-03-16 11:38:56
249
原创 【剑指offer】Java:双指针
目录参考了很多大佬的题解,仅作为自己学习笔记用。57-1. 和为s的两个数字57-2. 和为s的连续正数序列58-1. 翻转单词顺序58-2. 左旋转字符串参考资料参考了很多大佬的题解,仅作为自己学习笔记用。57-1. 和为s的两个数字题意:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。题解:利用双指针,一头一尾相互靠近求和,对撞指针。 public int[] twoSum(int[] nums, in
2021-03-15 11:11:15
261
原创 【剑指offer】Java:排序
目录参考了很多大佬的题解,仅作为自己学习笔记用。21. 调整数组顺序使奇数位于偶数前面45. 把数组排成最小的数51. 数组中的逆序对参考资料参考了很多大佬的题解,仅作为自己学习笔记用。21. 调整数组顺序使奇数位于偶数前面题意:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。题解:双指针,i 从左向右找偶数,j 从右向左找奇数。 public int[] exchange(int[] nums) {
2021-03-15 11:10:38
145
原创 【剑指offer】Java:二分查找
目录参考了很多大佬的题解,仅作为自己学习笔记用。11. 旋转数组的最小数字53-1. 统计一个数字在排序数组中出现次数53-2. 0~n-1中缺失的数字参考资料参考了很多大佬的题解,仅作为自己学习笔记用。11. 旋转数组的最小数字题意:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。题解: public int m
2021-03-15 11:08:15
112
原创 【剑指offer】Java:树
目录参考了很多大佬的题解,仅作为自己学习笔记用。07. 重建二叉树08. 二叉树的下一个节点26. 树的子结构参考资料参考了很多大佬的题解,仅作为自己学习笔记用。07. 重建二叉树题意:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。给出:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]·····································
2021-03-14 13:44:12
276
原创 【剑指offer】Java:位运算
目录参考了很多大佬的题解,仅作为自己学习笔记用。15. 二进制中 1 的个数56-1. 数组中出现一次的两个数参考资料参考了很多大佬的题解,仅作为自己学习笔记用。15. 二进制中 1 的个数题意:请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。输入必须是长度为 32 的二进制串 。输入:00000000000000000000000000001011输出:3
2021-03-09 14:46:20
74
原创 Java中的IO流
目录1. IO 流概述2. 流的四大家族3. 文件流4. 缓冲流5. 转换流6. 打印流7. 对象流8. File 类参考资料1. IO 流概述1.1 什么是 IO 流I:Input,O:Output。IO 流可以完成硬盘文件的读和写。1.2 IO 流的分类按流的方向分:输入流:进到内存中叫输入;输出流;从内存中出去叫输出;按读取数据的方式分:字节流:按字节方式读取数据,一次读取 1 个字节 byte,等同于 8 个二进制位,万能流,所有类型文件都可以读取;字符流:按字符
2021-02-18 21:18:18
258
原创 【Leetcode】Java:链表
目录参考了很多大佬的题解,仅作为自己学习笔记用。1、160. 相交链表2、206. 反转链表3、021. 合并两个有序链表4、083. 有序链表删除重复节点(留一个)5、019. 删除链表的倒数第 n 个节点6、024. 两两交换链表中的节点7、445. 两数相加(链表求和)8、234. 回文链表9、725. 分隔链表10、328. 奇偶链表参考资料参考了很多大佬的题解,仅作为自己学习笔记用。1、160. 相交链表题意:编写一个程序,找到两个单链表相交的起始节点。如果两个链表没有交点,返回 nu
2021-02-17 23:41:46
516
原创 【剑指offer】Java:链表
目录参考了很多大佬的题解,仅作为自己学习笔记用。1、06.从尾到头打印链表2、18.删除链表的节点参考资料参考了很多大佬的题解,仅作为自己学习笔记用。1、06.从尾到头打印链表题意:输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。输入:head = [1,3,2]输出:[2,3,1]题解1:递归。递推阶段:每次以 head.next 传入递归函数,以 head = null 为终止条件(即链表末尾);回溯阶段:将当前节点的值加入 list;最后将 list 转
2021-02-17 12:43:16
336
原创 Hugo + GitHub 搭建个人博客
目录1. windows 64 位安装 Hugo2. 用 Hugo 生成个人博客网站3. 下载并设置博客主题4. 在本地启动个人博客5. 写一篇文章并发布6. 将个人博客部署到 GitHub7. 修改博客再发布参考资料1. windows 64 位安装 Hugo本文基于电脑已经安装了 Git,如何安装 Git,请自行百度哈-。到 Hugo Releases,找到 hugo_0.80.0_Windows-64bit.zip 文件进行下载,下载后进行解压,即安装完成。解压之后重命名为 hugo,
2021-02-11 16:42:25
451
原创 Java中的集合
目录一、集合概述1. 集合的概念和作用2. 集合的继承关系图二、Collection 部分1. Iterable 接口2. List 接口2.1 ArrayList2.2 LinkedList2.3 Vector2.4 Stack3. Set 接口3.1 HashSet3.2 TreeSet4. Queue 接口4.1 Deque 接口4.2 ArrayDeque4.3 LinkedList4.4 PriorityQueue参考资料一、集合概述1. 集合的概念和作用数组其实就是一个集合。集合实际上就
2021-02-10 18:11:07
691
1
原创 【Leetcode】Java:栈和队列
目录参考了很多大佬的题解,仅作为自己学习笔记用。1、232. 用栈实现队列2、225. 用队列实现栈3、155. 最小值栈4、004. 栈判断括号匹配5、739. 数组中元素与下一个比它大的元素之间的距离6、503. 循环数组中比当前元素大的下一个元素参考资料参考了很多大佬的题解,仅作为自己学习笔记用。1、232. 用栈实现队列题意:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(
2021-02-08 18:20:46
336
原创 Java中的异常
目录一、异常的概念和作用二、异常的分类和继承结构三、异常的两种处理方式四、自定义异常参考资料一、异常的概念和作用概念:以下程序执行过程中发生了不正常的情况,这种不正常的情况叫做异常。public class ExceptionTest01 { public static void main(String[] args) { int a = 10; int b = 0; int c = a / b; System.out.pri
2021-02-07 23:20:17
97
原创 【剑指offer】Java:栈、队列、堆
目录参考了很多大佬的题解,仅作为自己学习笔记用。1、09.用两个栈实现队列2、30.包含 min 函数的栈3、31.栈的压入、弹出序列4、40.最小的 k 个数5、41.数据流中的中位数6、59.滑动窗口的最大值参考资料参考了很多大佬的题解,仅作为自己学习笔记用。1、09.用两个栈实现队列题意:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操
2021-02-07 18:08:56
111
原创 Java中String、StringBuffer、StringBuilder
目录1. String1.1 java.lang.String 类是不可变类1.2 String s1 = “xxx” 和 String s2 = new String(“xxx”)1.3 两个 String 面试题1.4 String 常用方法2. StringBuffer 和 StringBuilder2.1 StringBuffer2.2 StringBuilder2.3 一个面试题参考资料1. String1.1 java.lang.String 类是不可变类String表示字符串类型,
2021-02-06 00:01:51
293
原创 【Leetcode】Java:数组与矩阵
目录参考了很多大佬的题解,仅作为自己学习笔记用。一、 03找出数组中重复的数字参考了很多大佬的题解,仅作为自己学习笔记用。题目来源:Leetcode官网下的【剑指Offer官方授权】分类参考:http://www.cyc2018.xyz/#%E7%AE%97%E6%B3%95一、 03找出数组中重复的数字题目描述在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
2021-02-05 13:12:47
561
原创 Java语言基础
目录一、标识符二、关键字三、数据类型四、进制转换五、字符编码六、变量七、运算符八、控制语句总结一、标识符 标识符可以标识类名,变量名,接口名,方法名Java 标识符的命名规则标识符是由数字,字母,下划线和美元符号构成,其他符号不可以必须以字母、下划线或美元符号开头,不能以数字开头关键字不能作为标识符标识符区分大小写标识符理论上没有长度限制命名 Java 标识符,最好见名知意,可以使用驼峰标示合法不合法_123Test123Test
2021-02-01 11:21:09
521
原创 【剑指offer】Java:数组与矩阵
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言题目来源:Leetcode官网下的【剑指Offer官方授权版】一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport
2021-01-31 16:39:52
376
1
原创 Java概述
目录一、计算机语言发展二、Java语言发展三、Java语言特性四、Java的加载与执行1、编译阶段2、运行阶段五、开始第一个Java程序六、常用的DOS命令一、计算机语言发展主要分为三个阶段:1)第一代:机器语言;主要编写二进制码,打孔机2)第二代:低级语言;汇编语言,引入了一些单词3)第三代:高级语言;C、C++、Java等二、Java语言发展Java是一种语言,具有自己的语法和数据结构时间描述1991-1995Sun 为了占领智能消费电子产品市场,由james
2021-01-30 23:27:08
387
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人