自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 菜鸡的leetcode刷题笔记-数组中的重复数字

前言leetcode上,剑指offer,:题目地址解题思路本题比较简单1.哈希表遍历数组,每个元素放入哈希表中,若该数字已经在哈希表中存在了,那么就返回该数字class Solution { public int findRepeatNumber(int[] nums) { Set<Integer> dic = new HashSet<>(); for(int num : nums){ if(dic.con

2021-10-26 20:45:32 136

原创 菜鸡的leetcode刷题笔记-左旋转字符串

前言leetcode上,剑指offer,左旋转字符串:题目地址解题思路本题比较简单1.字符串拆分拼接把字符串拆分,拆分位置为需要旋转的字符的个数,然后再拼接起来便可JAVA里面对字符串拆分可以使用substring数组代码如下:class Solution { public String reverseLeftWords(String s, int n) { String res = new String(); res = s.substring(n

2021-10-25 20:49:22 116

原创 菜鸡的leetcode刷题笔记-替换字符串中的空格

前言leetcode上,剑指offer,复杂链表的复制:题目地址解题思路对于一个普通链表的复制,我们可以从头到尾,遍历节点,复制这个链表,但是对于这个复杂链表,由于一个节点会有random指针指向一个不确定的节点,而这个节点按照顺序可能还没有被创建,因此不能通过这种方式复制。1.回溯+哈希表具体思路是,使用一个哈希表,记录每一个原始链表节点对应的复制出来的新链表节点的创建情况,如果已经创建了,就放到这个哈希表中,如果没有被创建,哈希表中就没有。然后我们开始遍历原始链表,从头节点开始,检查这个原

2021-10-18 19:57:20 157

原创 菜鸡的leetcode刷题笔记-反转链表

前言leetcode上,剑指offer,反转链表:题目地址解题思路1.迭代其实很简单,我只需要遍历链表的节点,然后把当前节点next指针指向的节点,替换成上一个节点便可,因此需要单独保存以下上一个节点,同时,也需要保存一下下一个节点,因为原来的链表的顺序不能乱。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN

2021-10-17 22:22:22 102

原创 菜鸡的leetcode刷题笔记-从尾到头打印链表

前言leetcode上,剑指offer,从尾到头打印链表:题目地址基本知识什么是链表:链表是一种数据结构,里面存放了一系列数据,类似于数组。不同之处在于,数组中的数据在内存中的存储空间是连续的,因此可以直接通过元素的索引取出元素。但链表中的数据在内存中的存储空间不是连续的,链表的每一个数据节点包含数据、指向下一个节点的指针两部分,因此链表获取某个特定节点,只能从头一个一个往下找。链表的优点在于,不需要连续的存储单元,修改节点的复杂度较低,数据在修改节点时,需要把其余所有的元素移动位置,复杂度较

2021-10-13 21:25:36 84

原创 菜鸡的LeetCode刷题笔记-包含min函数的栈

前言leetcode上,剑指offer,包含min函数的栈:题目地址解题思路对于栈来说,pop、push、peek的时间复杂度都是O(1),但是如果要找最小值的话,时间复杂度就是O(n),因为需要遍历栈中的元素,那么如何降低时间复杂度呢?就用空间换时间,构造一个辅助栈,维护这个栈,使得栈顶的元素始终为原始栈中的最小元素便可。class MinStack { Stack<Integer> stack1,stack2; /** initialize your data s

2021-10-12 21:18:33 96

原创 菜鸡的LeetCode刷题笔记-两个栈实现队列

文章目录前言1.基础知识1.1 数据结构:栈1.1 数据结构:队列2.解题思路2.1 解题思路2.1.1 一个栈实现插入,一个栈实现删除前言leetcode上,剑指offer,用两个栈实现队列:题目地址1.基础知识1.1 数据结构:栈栈是一种数据结构,简单来说,数据像大饼一样被叠放在一起,数据只能放在栈的最上方,在取出数据的时候,只能从最上方取。栈中,添加数据的时候,就叫做入栈,取出数据的时候就叫做出栈,如下图所示:1.1 数据结构:队列队列与栈类似,也是一种数据结构,一种特殊的线性表,和

2021-10-12 20:46:48 100

原创 JAVA中的枚举类

文章目录什么是枚举类枚举类的成员变量、方法和构造器枚举类实现接口包含抽象方法的枚举类什么是枚举类某些情况下,一个类的对象是有限的、固定的,比如一周有7天、一年有12个月等。这种情况下,就需要使用枚举类。JAVA中借助enum关键字构建枚举类,enum关键字和class、interface关键字地位相同,所以一个JAVA源文件中最多只能定义一个public修饰的枚举类,并且Java源文件必须和该枚举类类名相同。例如:public enum seasonEnum { SPRING,SUMMER,FALL

2020-10-28 10:05:17 535

原创 JAVA中的Lambda表达式

文章目录Lambda表达式简介Lambda表达式与函数式接口二级目录三级目录Lambda表达式简介Lambda表达式用于将代码块作为参数传入方法中,有的时候,在你创建某个方法的时候,你并不知道方法应该对参数进行怎样的操作,只有到了使用的时候,才能真正确定。这种情境下,就可以借助接口来实现,具体可以使用接口的实现类、匿名内部类和Lambda表达式来实现://Command接口用以封装方法的”处理行为“interface Command{// process代表了处理行为,具体处理行为是怎样的,现在无

2020-10-26 13:37:47 329

原创 JAVA中的内部类

文章目录前言什么是JAVA中的内部类非静态内部类静态内部类前言李刚老师《JAVA疯狂讲义》第5版,第6章学习笔记。什么是JAVA中的内部类大多数情况下,类会被定义为一个单独的程序单元,但是有些时候,也会把一个类放在另一个类的内部定义。定义在一个类内部的类就是内部类。由于内部类定义在一个类的内部,因此除了public,还可以使用private、protected和static三个访问修饰符修饰(外部类不可使用这三个访问修饰符修饰)。为什么会这样呢?外部类的上一级程序结构是包,所以外部类只有两种作

2020-10-23 10:50:35 149

原创 JAVA中的接口

文章目录前言什么是接口二级目录三级目录前言李刚老师《JAVA疯狂讲义》第5版,第6章学习笔记。什么是接口二级目录三级目录

2020-10-19 21:47:13 249

原创 JAVA中的抽象类

文章目录前言什么是抽象类与抽象方法如何定义抽象类和抽象方法前言李刚老师《JAVA疯狂讲义》第5版,第6章学习笔记。什么是抽象类与抽象方法编写一个类时,常常会定义一些方法,方法用以描述类的行为,为此,这些方法应该具有方法体。但是,某些情况下,父类只是知道子类中应该包含怎样的方法,但是无法准确知道子类应该如何准确实现这一方法,那么,这些没有方法体的方法,就是抽象方法,而包含这些抽象方法的类,就是抽象类。抽象类是从多个具有相同特征的类中抽象出来的,这个类作为子类的模板,可以保证子类设计的统一性。例如,

2020-10-07 19:57:25 255

原创 JAVA-缓存实例的不可变类

前言:李刚老师《JAVA疯狂讲义》第5版,第6章学习笔记。不可变类的实例状态不可变,可以方便的被多个对象共享。若程序经常使用相同的不可变类实例,则应考虑缓存改实例,从而避免反复创建该对象,降低系统开销。实现缓存的方式有多种,以下举例借助数组实现缓存:...

2020-10-04 10:40:28 129

原创 JAVA中的final修饰符

文章目录前言1.final修饰变量1.1 final修饰成员变量1.2 final修饰局部变量1.1 final修饰基本类型和引用类型变量2.final修饰方法3.final修饰类前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。JAVA中的final修饰符可以用来修饰变量、方法和类,用于表示被修饰的变量、方法和类不可变。1.final修饰变量final变量获得初始值后,就无法被重新赋值,当其修饰成员变量和实例变量时,有所不同。修饰基本类型变量和引用类型变量时也有所不同1.1 final修

2020-09-27 21:04:45 1020

原创 JAVA中的初始化块

文章目录前言1.什么是初始化块2.初始化块与构造器3.静态初始化块4.初始化块执行顺序前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.什么是初始化块初始化块是类的第4种成员(成员变量、方法、构造器),与构造器作用有些类似,用于对JAVA对象进行初始化操作。例如:public class Animal { //定义初始化块 { int a = 6; if(a>4) { System.out.println("Animal初始化块,局部变量a的值大于4"); }

2020-09-25 09:58:54 1394

原创 JAVA中的继承和组合

文章目录前言1.JAVA中继承的局限性2.JAVA中组合的实现前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.JAVA中继承的局限性2.JAVA中组合的实现

2020-09-24 18:04:37 263

原创 JAVA中多态的简单理解

文章目录前言JAVA中的多态前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。JAVA中的多态JAVA中的多态指的是,相同的变量,调用相同的方法,结果却不一样。具体如下://定义一个Person类public class Person{ //Person类的成员变量 int age = 10; //Person类的方法 public void eat() { System.out.println("我是人的吃饭方法"); }}//定义一个Person类的子类,Police

2020-09-24 16:08:11 287

原创 JAVA中类的继承

文章目录前言1.什么是继承2.父类方法的重写3.super关键字4.父类的构造器前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.什么是继承继承是面向对象编程的三大特征之一,是实现代码复用的重要手段。编程时,相同的一段代码最好只写一次。试想,比如有两个类,一个NBA球员类,一个湖人球员类(湖人总冠军!!!),NBA球员类里面定义了一个成员变量,叫球员底薪。我湖人球员类也不搞继承这一套,自己也定义一个成员变量,球员底薪。要是有一天,NBA的规则变了,球员底薪变了,那么,由于不存在继承关系,

2020-09-23 17:04:25 342

原创 JAVA中的访问控制符

文章目录前言1.什么是封装2.JAVA中的访问修饰符前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.什么是封装JAVA的类中可以定义成员变量,在不做任何处理的情况下,成员变量可以让对象直接访问与修改。这可能产生一系列问题,比如NBAplayer类的"球员位置"这个成员变量被改成了守门员,从语法上分析并无错误,但是不符合实际意义。借助封装就可以解决这一问题,封装可以将细节隐藏在类的内部,外界只通过类提供的方法来实现对成员变量的操作。比如上述提到的问题,就可以设置一个setPosition

2020-09-23 09:28:39 278

原创 JAVA中的成员变量和局部变量

文章目录前言1.JAVA成员变量和局部变量1.1 成员变量1.2 局部变量2.JAVA成员变量和局部变量的内存运行机制前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.JAVA成员变量和局部变量在JAVA中,根据变量定义的位置不同,可以把变量划分为成员变量和局部变量两大类,二者命名的语法规则是完全相同的,JAVA中的变量分类具体如下:成员变量就是说这个变量是类的成员,局部变量就是说这个变量只是局部的方法或者代码块里面使用以下,毕竟JAVA中类才是老大,类的变量才有资格说自己是个成员!

2020-09-22 19:27:49 1237

原创 JAVA中的方法

文章目录前言1.JAVA方法的所属性2.JAVA方法的参数传递机制3.JAVA方法的递归4.JAVA方法的重载前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。1.JAVA方法的所属性JAVA中,方法是对类或对象行为特征的抽象,它是类或对象的最重要的组成部分。面向对象编程中的方法,结构化编程中的函数,二者到底有什么本质区别呢?二者所属性不同,结构化编程中,函数可被单独执行,函数不属于任何事物,软件由一个个函数构成,函数是程序的老大。面向对象的编程中,方法不可被单独执行,方法属于类或对象,软件

2020-09-21 21:43:20 1207

原创 JAVA中的类和对象

文章目录前言类的定义对象的创建和使用对象在内存中的存储对象的this引用前言李刚老师《JAVA疯狂讲义》第5版,第5章学习笔记。类的定义什么是JAVA中的类呢?JAVA中的类是一种引用类型,类用于描述客观世界中,某一类对象的共同特征,比如:水果是一类对象、NBA球员是一类对象、哺乳类动物是一类对象。利用类,可以定义变量,类是一种引用类型,定义的变量是引用变量。那么这个引用变量到底指向哪里呢?指向的就是类的对象,对象就是具体存在的实体,引用变量就是指向这个实体的指针。比如类是NAB球员,创建的引

2020-09-21 16:54:16 242

原创 JAVA中的数组

文章目录前言1.什么是数组2.JAVA数组的定义3.JAVA数组的初始化3.1 静态初始化3.2 动态初始化4.JAVA数组的存储方式5.JAVA数组的使用前言李刚老师《JAVA疯狂讲义》第5版,第4章学习笔记。1.什么是数组JAVA中的数组也是一种数据类型,一种引用类型。在JAVA中,要求所有的数组元素具有相同的数据类型,可以是基本数据类型,也可以是引用数据类型。一旦数组初始化完成,该数组在内存中的空间将被固定,其数组长度将不可变。2.JAVA数组的定义JAVA支持两种定义数组的语法:ty

2020-09-20 07:41:07 295

原创 JAVA中的流程控制语句

文章目录前言1.顺序结构2.分支结构2.1 if语句2.2 switch 语句3.循环结构3.1 while循环3.2 do while循环3.3 for循环3.4 控制循环结构3.4.1 break3.4.2 continue3.4.3 return前言李刚老师《JAVA疯狂讲义》第5版,第4章学习笔记。1.顺序结构如果没有其他流程控制语句,JAVA方法中的语句就是顺序结构,从上至下执行。2.分支结构JAVA中提供了两种分支结构:if语句和switch语句。2.1 if语句if语句的完整形

2020-09-19 15:42:13 197

原创 JAVA-运算符

文章目录前言1.算术运算符2.赋值运算符3.位运算符4.比较运算符5.逻辑运算符6.三目运算符前言李刚老师《JAVA疯狂讲义》第5版,第3章学习笔记。1.算术运算符JAVA支持的7个算术运算符:加(+)、减(-)、乘(x)、除(/)、求余(%)、自加(++)、自减(–)。注意:加法运算符+:除了可以作为加法运算符,还可以作为字符串连接符除法运算符/:若两个操作数都是整数,则结果也为整数,同时分母不能为0,否则会报错;当两个操作数中有一个为浮点数时,结果就为浮点数。求余运算符%:求余运算的结

2020-09-18 22:25:22 118

原创 JAVA数据类型

文章目录前言1.JAVA数据类型1.1 引用类型(Reference Type)1.2 基本类型(Primitive Type)1.2.1 数值类型1.2.2 布尔类型1.3 基本类型的类型转换2.JAVA运算符前言李刚老师《JAVA疯狂讲义》第5版,第3章学习笔记。1.JAVA数据类型JAVA是强类型语言(strongly typed),这意味着:JAVA中的所有变量必须首先声明,然后才能使用。JAVA中的变量,只能接受与这个变量的数据类型匹配的值。JAVA为什么要设计成强类型语言:强

2020-09-18 11:30:49 100

原创 JAVA-理解面向对象

文章目录前言1.结构化程序设计2.面向对象程序设计3.二者的异同4.面向对象基本特征5.JAVA面向对象特征前言李刚老师《JAVA疯狂讲义》第5版,第2章学习笔记。1.结构化程序设计目前软件开发领域有两种主流开发方法:结构化开发方法、面向对象开发方法。结构化开发方法:按照功能拆分开发需求,最小的程序单元为函数,每个函数完成一个功能,每个函数接受输入数据,处理后输出。整个软件系统由一个个函数构成,程序入口为主函数,主函数调用普通函数,普通函数之间依次调用,从而完成整个软件系统功能。具体程序设计.

2020-09-16 22:14:56 117

空空如也

空空如也

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

TA关注的人

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