- 博客(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
872
转载 MySQL索引数据结构详解
@TOC 索引 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分
2021-03-18 21:49:48
613
原创 【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
443
原创 【Leetcode】Java:双指针
目录参考了很多大佬的题解,仅作为自己学习笔记用。167. 两数之和-输入有序数组(easy)633. 两数平方和(medium)345. 反转字符串中的元音字母(easy)680. 验证回文字符串Ⅱ:可以删一个字符(easy)088. 归并两个有序数组到其中一个数组(easy)141. 判断链表是否存在环(easy)524. 删除字母匹配字典里最长单词(medium)参考资料 参考了很多大佬的题解,仅作为自己学习笔记用。 167. 两数之和-输入有序数组(easy) 题意: 给定一个已按照 升序排列
2021-03-16 11:38:56
388
原创 【剑指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
352
原创 【剑指offer】Java:排序
目录参考了很多大佬的题解,仅作为自己学习笔记用。21. 调整数组顺序使奇数位于偶数前面45. 把数组排成最小的数51. 数组中的逆序对参考资料 参考了很多大佬的题解,仅作为自己学习笔记用。 21. 调整数组顺序使奇数位于偶数前面 题意: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 题解: 双指针,i 从左向右找偶数,j 从右向左找奇数。 public int[] exchange(int[] nums) {
2021-03-15 11:10:38
212
原创 【剑指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
189
原创 【剑指offer】Java:树
目录参考了很多大佬的题解,仅作为自己学习笔记用。07. 重建二叉树08. 二叉树的下一个节点26. 树的子结构参考资料 参考了很多大佬的题解,仅作为自己学习笔记用。 07. 重建二叉树 题意: 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 给出: 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] ·····································
2021-03-14 13:44:12
352
原创 【剑指offer】Java:位运算
目录参考了很多大佬的题解,仅作为自己学习笔记用。15. 二进制中 1 的个数56-1. 数组中出现一次的两个数参考资料 参考了很多大佬的题解,仅作为自己学习笔记用。 15. 二进制中 1 的个数 题意: 请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 输入必须是长度为 32 的二进制串 。 输入:00000000000000000000000000001011 输出:3
2021-03-09 14:46:20
160
原创 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
340
原创 【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
664
原创 【剑指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
402
原创 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
649
原创 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
834
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
450
原创 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
172
原创 【剑指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
208
原创 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. String 1.1 java.lang.String 类是不可变类 String表示字符串类型,
2021-02-06 00:01:51
362
原创 【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
734
原创 Java语言基础
目录一、标识符二、关键字三、数据类型四、进制转换五、字符编码六、变量七、运算符八、控制语句总结 一、标识符 标识符可以标识类名,变量名,接口名,方法名 Java 标识符的命名规则 标识符是由数字,字母,下划线和美元符号构成,其他符号不可以 必须以字母、下划线或美元符号开头,不能以数字开头 关键字不能作为标识符 标识符区分大小写 标识符理论上没有长度限制 命名 Java 标识符,最好见名知意,可以使用驼峰标示 合法 不合法 _123Test 123Test
2021-02-01 11:21:09
605
原创 【剑指offer】Java:数组与矩阵
文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 题目来源:Leetcode官网下的【剑指Offer官方授权版】 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import
2021-01-31 16:39:52
492
1
原创 Java概述
目录一、计算机语言发展二、Java语言发展三、Java语言特性四、Java的加载与执行1、编译阶段2、运行阶段五、开始第一个Java程序六、常用的DOS命令 一、计算机语言发展 主要分为三个阶段: 1)第一代:机器语言;主要编写二进制码,打孔机 2)第二代:低级语言;汇编语言,引入了一些单词 3)第三代:高级语言;C、C++、Java等 二、Java语言发展 Java是一种语言,具有自己的语法和数据结构 时间 描述 1991-1995 Sun 为了占领智能消费电子产品市场,由james
2021-01-30 23:27:08
527
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅