自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Java 编程的逻辑》笔记——第10章 Map和Set(二)

文章目录10.3 排序二叉树10.3.1 基本概念10.3.2 基本算法10.3.2.1 查找10.3.2.2 遍历10.3.2.3 插入10.3.2.4 删除10.3.3 平衡的排序二叉树10.3.4 小结10.4 剖析 TreeMap10.4.1 基本用法10.4.1.1 构造方法10.4.1.2 基本例子10.4.1.3 日期例子10.4.1.4 基本用法小结10.4.2 基本实现原理10.4.2.1 内部组成10.4.2.2 保存键值对10.4.2.3 根据键获取值10.4.2.4 查看是否包含某个

2020-08-27 14:36:44 192

原创 《Java 编程的逻辑》笔记——第10章 Map和Set(一)

文章目录开头语10.1 剖析 HashMap10.1.1 基本概念10.1.2 接口定义10.1.3 HashMap10.1.3.1 使用例子10.1.3.2 构造方法10.1.4 实现原理10.1.4.1 内部组成10.1.4.2 默认构造方法10.1.4.3 保存键值对10.1.4.4 查找方法10.1.4.5 查看是否包含某个键10.1.4.6 查看是否包含某个值10.1.4.7 根据键删除键值对10.1.4.8 实现原理小结10.1.5 HashMap 特点分析10.1.6 小结10.2 剖析 Ha

2020-08-25 23:30:35 199

原创 《Java 多线程编程核心技术》笔记——第3章 线程间通信(一)

文章目录3.1 等待/通知机制3.1.1 不使用等待/通知机制实现线程间通信3.1.2 什么是等待/通知机制3.1.3 等待/通知机制的实现3.1.4 方法 wait() 锁释放与 notify() 锁不释放3.1.5 当 interrupt 方法遇到 wait 方法3.1.6 只通知一个线程3.1.7 唤醒所有线程3.1.8 方法 wait(long) 的使用3.1.9 通知过早3.1.10 等待 wait 的条件发生变化3.1.11 生产者/消费者模式实现3.1.11.1 一生产与一消费:操作值3.1.

2020-08-23 17:15:41 213

原创 《剑指 Offer》——42、和为 S 的两个数

1. 本题知识点数学,双指针2. 题目描述输入一个递增排序的数组和一个数字 S,在数组中查找两个数,使得他们的和正好是 S,如果有多对数字的和等于 S,输出两个数的乘积最小的。3. 解题思路使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。如果两个指针指向元素的和 sum < S,移动较小的元素指针,使 sum 变大一些。如果两个指针指向元素的和 sum > S,移动较大的元素指针,使 sum

2020-08-17 21:30:20 117

原创 《剑指 Offer》——44、翻转单词顺序

1. 本题知识点字符串2. 题目描述牛客最近来了一个新员工 Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事 Cat 对 Fish 写的内容颇感兴趣,有一天他向 Fish 借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是 “I am a student.”。Cat 对一一的翻转这些单词顺序可不在行,你能帮助他么?3. 解题思路输入原字符串“student. a am I”以空格分割

2020-08-17 19:36:38 132

原创 《Java 编程的逻辑》笔记——第9章 列表和队列

文章目录9.1 剖析 ArrayList9.1.1 基本用法9.1.2 基本原理9.1.2.1 内部组成9.1.2.2 add 方法9.1.2.3 remove方法9.1.3 迭代9.1.3.1 foreach 用法9.1.3.2 迭代器接口9.1.3.3 ListIterator9.1.3.4 迭代的陷阱9.1.3.5 迭代器实现的原理9.1.3.6 迭代器的好处9.1.4 ArrayList 实现的接口9.1.4.1 Collection9.1.4.2 List9.1.4.3 RandomAccess9

2020-08-16 20:42:11 274

原创 《剑指 Offer》——28、数组中出现次数超过一半的数字

1. 本题知识点数组2. 题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为 9 的数组 {1,2,3,2,2,2,5,4,2}。由于数字 2 在数组中出现了 5 次,超过数组长度的一半,因此输出 2。如果不存在则输出 0。3. 解题思路排序对数组进行排序取排序后数组的中间的元素,由于有一个数字出现的次数超过数组长度的一半,所以中间的元素一定就是这个数遍历数组,记录这个数出现的次数若出现次数超过数组长度一半,返回这个数否则返回 0使用

2020-08-16 10:18:07 143

原创 《剑指 Offer》——47、求 1+2+3+4+···+n

1. 本题知识点数学2. 题目描述求 1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。3. 解题思路我们可以考虑一下有哪些思路:可以使用求和公式,但要求不能使用乘除法,所以这个思路不行sum=n∗(1+n)2sum=\frac{n*(1+n)}{2}sum=2n∗(1+n)​可以使用循环,但要求不能使用 for、while,所以这个思路不行public int Sum_Solution(in

2020-08-15 16:24:30 575

原创 《剑指 Offer》——38、二叉树的深度

1. 本题知识点二叉树2. 题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。3. 解题思路求树的深度,可以从层次遍历出发考虑。层次遍历可以使用队列完成,也可以使用递归完成,所以有两种解题思路。递归如果当前结点为空,返回 0如果不为空,返回其左子树和右子树中深度最大的值再加 1使用队列创建深度,初始化为 0创建一个队列将根节点加入队列当队列不为空时,执行以下循环记录本层二叉树的结点数

2020-08-15 15:18:23 143

原创 《剑指 Offer》——34、第一个只出现一次的字符

1. 本题知识点字符串2. 题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)3. 解题思路用 HashMap 建立每个字符与其出现次数的映射依次遍历字符串,找到第一个出现次数为 1 的字符,返回其位置4. 代码import java.util.HashMap;public class Solution { public int FirstNotRepeati

2020-08-15 13:42:22 132

原创 《Java 编程的逻辑》笔记——第8章 泛型

文章目录开头语8.1 基本概念和原理8.1.1 一个简单泛型类8.1.1.1 基本概念8.1.1.2 基本原理8.1.1.3 泛型的好处8.1.2 容器类8.1.3 泛型方法8.1.4 泛型接口8.1.5 类型参数的限定8.1.5.1 上界为某个具体类8.1.5.2 上界为某个接口8.1.5.3 上界为其他类型参数8.1.6 小结8.2 解析通配符8.2.1 更简洁的参数类型限定8.2.2 理解通配符8.2.2.1 无限定通配符8.2.2.2 通配符的只读性8.2.2.3 参数类型间的依赖关系8.2.2.4

2020-08-14 23:09:45 194

原创 《Java 编程的逻辑》笔记——第7章 常用基础类(三)

文章目录7.5 剖析日期和时间7.5.1 基本概念7.5.1.1 时区7.5.1.2 时刻和纪元时7.5.1.3 年历7.5.2 日期和时间 API7.5.2.1 Date7.5.2.2 TimeZone7.5.2.3 国家和语言 Locale7.5.2.4 Calendar7.5.2.5 DateFormat7.5.2.6 SimpleDateFormat7.5.3 局限性7.6 随机7.6.1 Math.random7.6.2 Random7.6.2.1 基本用法7.6.2.2 设置种子7.6.3 随机

2020-08-12 22:14:08 254

原创 《剑指 Offer》——20、包含 min 函数的栈

1. 本题知识点栈2. 题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数(时间复杂度应为 O(1))。3. 解题思路使用两个 stack,一个为数据栈,另一个为辅助栈。数据栈用于存储所有数据,辅助栈用于存储数据栈中最小元素。为了使辅助栈存储数据栈中最小元素,每次元素进栈时需要执行以下过程:若辅助栈为空,则将该元素放入辅助栈若辅助栈不为空,将该元素和辅助栈栈顶元素进行比较,将其中数值较小的元素放进辅助栈4. 代码import java.util.S

2020-08-11 21:07:38 131

原创 《剑指 Offer》——19、顺时针打印矩阵

1. 本题知识点数组2. 题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字例如:输入如下 4 X 4 矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,103. 解题思路可以把矩阵看成若干个圈,从外向里以顺时针打印,每次打印矩阵中的一圈。每一圈从该圈的左上角开始,可以发现起点的行下标和列下标是相等的。由于矩阵并不一定是方阵,最

2020-08-11 20:13:28 144

原创 《剑指 Offer》——17、树的子结构

1. 本题知识点二叉树2. 题目描述输入两棵二叉树 A,B,判断 B 是不是 A 的子结构。(ps:我们约定空树不是任意一个树的子结构)例如:二叉树 A: 8 / \ 6 10 / \ / \ 5 7 9 11二叉树 B: 6 / \ 5 7 3. 解题思路可以分两步解决这个问题:遍历二叉树 A,在二叉树 A 中找到与二叉树 B 的根结点值相等的结点判断二叉树

2020-08-11 00:09:01 92

原创 《剑指 Offer》——6、旋转数组的最小数字

1. 本题知识点查找2. 题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如:原数组:{1,2,3,4,5}输入旋转数组:{3,4,5,1,2}输出旋转数组的最小元素:1NOTE:给出的所有元素都大于 0,若数组大小为 0,请返回 0。3. 解题思路基本思路将旋转数组对半分,可以得到一个非递减排序的数组,以及一个包含最小元素的新旋转数组。将旋转数组再次对半分,又可以得到一个非递

2020-08-10 20:18:38 151

原创 《SQL 实战》题解(33-48题)

文章目录SQL33SQL34SQL35SQL36SQL37SQL38SQL39SQL40SQL41SQL42SQL43SQL44SQL45SQL46SQL47SQL48SQL33题目创建一个actor表,包含如下列信息(注:sqlite获取系统默认时间是datetime(‘now’,‘localtime’))列表类型是否为NULL含义actor_idsmallint(5)not null主键idfirst_namevarchar(45)not null名

2020-08-10 17:38:33 320

原创 《Java 编程的逻辑》笔记——第7章 常用基础类(二)

文章目录7.2 剖析 String7.2.1 基本用法7.2.2 走进 String 内部7.2.2.1 封装字符数组7.2.2.2 按 Code Point 处理字符7.2.3 编码转换7.2.4 不可变性7.2.5 常量字符串7.2.6 hashCode7.2.7 正则表达式7.3 剖析 StringBuilder7.3.1 基本用法7.3.2 基本实现原理7.3.2.1 内部组成和构造方法7.3.2.2 append 的实现7.3.2.3 toString 实现7.3.2.4 其他修改方法7.3.3

2020-08-10 14:58:59 143

原创 《Java 编程的逻辑》笔记——第7章 常用基础类(一)

文章目录前言7.1 包装类7.1.1 基本用法7.1.2 共同点7.1.2.1 重写 Object 方法7.1.2.2 Comparable7.1.2.3 包装类和 String7.1.2.4 常用常量7.1.2.5 Number7.1.2.6 不可变性7.1.3 剖析 Integer 与二进制算法7.1.3.1 位翻转7.1.3.2 循环移位7.1.3.3 valueOf 的实现7.1.4 剖析 Character7.1.4.1 Unicode 基础7.1.4.2 检查 code point 和 char

2020-08-08 14:38:46 259

原创 《Java 编程的逻辑》笔记——第6章 异常

文章目录开头语6.1 初识异常6.1.1 NullPointerException (空指针异常)6.1.2 NumberFormatException (数字格式异常)6.2 异常类6.2.1 Throwable6.2.2 异常类体系6.2.3 自定义异常6.3 异常处理6.3.1 catch 匹配6.3.2 重新抛出异常6.3.3 finally6.3.4 throws6.3.5 对比受检和未受检异常6.4 如何使用异常6.4.1 异常应该且仅用于异常情况6.4.2 异常处理的目标6.4.3 异常处理的

2020-08-06 14:13:12 183

原创 《SQL 实战》题解(17-32题)

文章目录SQL17SQL18SQL19SQL20SQL21SQL22SQL23SQL24SQL25SQL26SQL27SQL28SQL29SQL30SQL31SQL32SQL17题目获取当前(to_date=‘9999-01-01’)薪水第二多的员工的emp_no以及其对应的薪水salaryCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NUL

2020-08-05 23:13:40 255

原创 《Java 编程的逻辑》笔记——第5章 类的扩展

文章目录5.1 接口的本质5.1.1 数据类型的局限5.1.2 接口概念5.1.3 定义接口5.1.4 实现接口5.1.5 使用接口5.1.6 接口的细节5.1.6.1 接口中的变量5.1.6.2 接口的继承5.1.6.3 类的继承与接口5.1.6.4 instanceof5.1.7 使用接口替代继承5.1.8 小结5.2 抽象类5.2.1 抽象方法和抽象类5.2.2 为什么需要抽象类5.2.3 抽象类和接口5.2.4 小结5.3 内部类的本质5.3.1 内部类5.3.1.1 静态内部类5.3.1.2 成员

2020-08-05 14:57:41 217

原创 《Java 编程的逻辑》笔记——第4章 类的继承

文章目录开头语4.1 基本概念4.1.1 Object4.1.2 方法重写4.1.3 图形类继承体系4.1.3.1 图形4.1.3.2 圆4.1.3.3 直线4.1.3.4 带箭头的直线4.1.3.5 图形管理器4.1.4 小结4.2 继承的细节4.2.1 构造方法4.2.1.1 super4.2.1.2 构造方法调用重写方法4.2.2 重名与静态绑定4.2.3 重载与重写4.2.4 父子类型转换4.2.5 继承访问权限 protected4.2.6 可见性重写4.2.7 防止继承 (final)4.3 继

2020-08-03 11:49:31 242

原创 《Java 编程的逻辑》笔记——第3章 类的基础

开头语程序主要就是数据以及对数据的操作,为方便理解和操作,高级语言使用数据类型这个概念,不同的数据类型有不同的特征和操作。Java 定义了八种基本数据类型,四种整型 byte/short/int/long,两种浮点类型 float/double,一种真假类型 boolean,一种字符类型 char,其他类型的数据都用类这个概念表达。3.1 类的基本概念在第1章,我们暂时将类看做函数的容器,在某些情况下,类也确实基本上只是函数的容器,但类更多表示的是自定义数据类型。我们先从容器的角度,然后从自定义数据

2020-08-01 14:17:22 179

空空如也

空空如也

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

TA关注的人

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