自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态代理看这个就够了

InvocationHandler h //它就类似于Agent的功能,代理的功能和目标对象的业务功能调用在这。类中的成员变量设计为接口,方法的形参设计为接口,方法的返回值设计为接口,调用时接口指向实现类.4)能够灵活的进行目标对象的切换,却无法进行功能的灵活处理(使用动态代理解决此问题)又称为子类.通过动态的在内存中构建子类对象,重写父类的方法进行代理功能的增强.代理对象在程序运行的过程中动态在内存构建.可以灵活的进行业务功能的切换.2)动态代理,又为JDK动态代理,CGLib动态代理(子类代理)...

2022-08-17 16:39:53 146 1

原创 剑指 Offer 58 - I. 翻转单词顺序

s.trim()方法去除空格键,让i,j从尾部开始遍历当i遍历到空格的时候,使用substring进行截取,把单词截取出来放到res新建StringBuilder后面,最终使用tostring转换成字符串。输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"Iamastudent.“,则输出"student.aamI”。本题使用双指针的方法进行遍历。...

2022-07-24 21:12:17 125

原创 剑指 Offer 25. 合并两个排序的链表

第二种情况当一个链表为空的时候另外一个不是空的时候复制另外的链表存放进新链表。输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。分情况讨论首先第一种两个链表都不是空的时候比较大小,按照次序存放。新建链表进行拼接两个子链表。...

2022-07-23 17:22:20 161

原创 剑指 Offer 22. 链表中倒数第k个节点

接着再让慢指针和快指针一起向后走,在并列一个while循环,走快慢指针。使用快慢指针双指针来做,倒数第K的意思就是快慢指针相隔k个单位进行遍历。首先先让快指针走K个单位,while循环遍历快指针。......

2022-07-23 11:48:07 147

原创 剑指 Offer 48. 最长不含重复字符的子字符串

首先定义两个指针,两个指针均从为0的位置开始遍历,第一个指针后移,哈希表中的字母加1,直到哈希表中某个字母的值为2,则第二个指针后移知道字母数值为二地方的值变为一,统计两个指针之间的间距。主要的难点是i先走,j在i的空间内遍历,设置中间变量l作为存储中间值。dp[j]表示右边界下标为j的时候,可以取到的最长不重复范围长度。...

2022-07-22 11:50:33 65

原创 (动态规划系列)剑指 Offer 48. 最长不含重复字符的子字符串

三部曲确定dp[i]含义。

2022-07-17 18:43:31 37

原创 剑指 Offer 28. 对称的二叉树

本体使用队列来做,首先判断子树是否为空接着放入左和右,判断出队列的元素是否为空,肯定考虑四个条件。然后再把左子树的左边 右子树的右边依次放入队列(成对的放入)

2022-07-12 22:41:15 93

原创 剑指 Offer 27. 二叉树的镜像

本体使用队列来做,队列的目的就是存储原始序列顺序的二叉树首先判断根节点是否为空然后新建子队列队列压入根节点使用while(循环)弹出队列元素分别压入左右节点交换左右节点返回初始结点...

2022-07-12 16:43:33 106

原创 剑指 Offer 26. 树的子结构

本题使用递归的方法来寻找:先从根节点判断B是不是A的子结构,如果不是在分别从左右两个子树判断,只要有一个为true,就说明B是A的子结构如果B为空,A不为空则遍历结束如果B不为空,A为空,或者这两个结点的值不一样则返回返回false。接着比较A,B节点的对应的左右子树。...

2022-07-12 15:57:20 110

原创 剑指 Offer 32 - II. 从上到下打印二叉树 II

本道题使用广度优先遍历的层序遍历,使用迭代法进行遍历(根据层序遍历的特点使用队列进行存储)本题与上面一题的不同在于输出的是二维链表,即使用上一个方法遍历的结果,引入一层while循环进行遍历存储每一层的值...

2022-07-06 09:52:31 110

原创 剑指 Offer 50. 第一个只出现一次的字符

剑指 Offer 50

2022-07-05 11:09:37 40

原创 排序算法-快速排序

1.确定基准元素就是数组最左边的位置元素2.首先判断队尾元素2.1 如果队尾元素大于等于基准元素的时候,向前挪动尾指针2.2 如果队尾元素小于基准元素的时候,则把尾指针的数值赋值给初始指针3.要是为2.1的情况则继续比较,要是为2.2的情况则首指针后移一位4.当两个首指针,尾指针相遇的时候则把基准元素赋值给两个元素相交的位置5.引入递归(这里要注意递归的前后顺序)...

2022-07-05 10:26:10 205

原创 剑指 Offer 04. 二维数组中的查找

二维数组查找

2022-07-04 17:04:41 61

原创 剑指 Offer 53 - II. 0~n-1中缺失的数字

)使用等差数列公式求出n项和,然后求出数组的和,两者进行相减

2022-07-04 16:34:50 45

原创 剑指 Offer 53 - I. 在排序数组中查找数字 I

)两种方法第一种:暴力解决。第二种:使用双分查找,由于是排序好的数组,对于找到的那个值,让他加加判断是否相等,如果相等就让count+1;

2022-07-04 15:13:29 41

原创 剑指 Offer 58 - II. 左旋转字符串

主要考察substring的用法。

2022-07-04 11:16:35 51

原创 剑指 Offer 05. 替换空格

1.使用数组来做,首先将新建一个数组,计算原始字符串的长度当做数组长度2.遍历数组。找到空格字符串,提换为“%20”;3.新数组建立原来数组长度的三倍,用来存放新字符串4.字符串数组转为字符串5.考察.charAt的用法,以及字符数组转为字符串的用法(String a =new String())...

2022-07-04 11:14:16 53

原创 剑指 Offer 05. 替换空格

1.使用数组来做,首先将新建一个数组,计算原始字符串的长度当做数组长度2.遍历数组。找到空格字符串,提换为“%20”;3.新数组建立原来数组长度的三倍,用来存放新字符串4.字符串数组转为字符串5.考察.charAt的用法,以及字符数组转为字符串的用法(String a =new String())...

2022-07-04 10:52:58 68

原创 剑指 Offer 35.复杂链表的复制

1.先判断是否为空,如果为空则返回null2.新建map集合来进行原始链表到新链表的复制3.建立新链表的指针指向

2022-07-04 10:09:48 79

原创 剑指 Offer 06.从头到尾打印链表

1.由于输入输出都是数组,所以新建一个数组,用来存放反转以后的数组即从尾部到头的数组2.其次取出数组的长度赋值给新数组3.头结点取值赋值给新数组,然后往后遍历,

2022-07-04 09:38:34 81

原创 剑指 Offer 09. 用两个栈实现队列

1.首先定义两个栈s1,s2,s1的栈顶作为队尾,s2的栈顶作为队投2.删除操作首先判断s2是否为空 如果不为空,把栈顶元素弹出就是头元素 如果为空,将s1所有元素弹出入栈到s23.s2为空返回-1,不为空返回栈顶元素...

2022-07-01 15:21:05 51

原创 每日一题-无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

2022-06-30 10:51:47 134

原创 每日一题-搜索二维矩阵ps二维数组的查找

在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。如果要使得查找速度最快,则需要从矩阵的左下角开始遍历,因为从左下角来说,向上数字递减,向右数字变大,当目标值比搜索值大的时候,上移,当目标值比搜索值小的时候,右移...

2022-06-29 11:17:33 68

原创 JAVA基础-XML

1.XML概述它是一种数据表示结构格式,常用于数据传输以及存储数据。1.1 使用场景XML内容经常被当做消息进行网络传输,或者作为配置文件用于存储系统的信息。1.2 XML数据的作用是什么,最终需要怎么处理存储数据做配置信息,进行数据传输,最终需要被程序进行读取,解析里面的信息。1.3 XML解析使用程序读取XML中的数据两种解析方式:SAX解析 DOM解析2. 设计模式...

2022-04-26 11:13:44 327

原创 JAVA基础-接口(附抽象类)

1.抽象类抽象类1.接口中存放了哪些东西1.可以有main函数(入口函数)public static void main(String[] args){}2.default方法public default void print1(){}3.private修饰的方法private static void print2(){}4.静态方法public static void print3(){}5.抽象方法public abstract void print4();一般来说前两个修饰符

2022-04-22 10:03:22 871

原创 JAVA基础-junit单元测试

1.1 单元测试方法使用原因1.2 单元测试方法用处单元测试方法常用注解

2022-04-12 10:29:44 320

原创 JAV基础-枚举类

1.1 枚举类的理解Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等。Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。enum Color { RED, GREEN, BLUE; } 实例:enum Color{ RED, GREEN, BLUE;} public class Test{ // 执行输出结果 public static v

2022-04-11 21:08:47 4392

原创 JAVA基础-Java内存图以及堆、栈、常量区、静态区、方法区的区别

堆:堆主要存放Java在运行过程中new出来的对象,凡是通过new生成的对象都存放在堆中,对于堆中的对象生命周期的管理由Java虚拟机的垃圾回收机制GC进行回收和统一管理。类的非静态成员变量也放在堆区,其中基本数据类型是直接保存值,而复杂类型是保存指向对象的引用,非静态成员变量在类的实例化时开辟空间并且初始化。所以你要知道类的几个时机,加载-连接-初始化-实例化栈:栈主要存放在运行期间用到的一些局部变量(基本数据类型的变量)或者是指向其他对象的一些引用,因为方法执行时,被分配的内存就在栈中,所以当然存储.

2022-04-11 11:06:46 1127

原创 LeeCode每日一题-剑指Offer58-II.左旋转字符串

1. 题目2. 代码class Solution { public String reverseLeftWords(String s, int n) { StringBuilder sb=new StringBuilder(s); int len=s.length(); reverseString(sb,0,n-1); reverseString(sb,n,n-1); String sb2=sb.reverse()

2022-04-07 10:17:48 90

原创 LeeCode每日一题-替换空格

1.题目2. 代码class Solution { public String replaceSpace(String s) { if(s == null || s.length() == 0){ return s; } StringBuilder str = new StringBuilder(); for (int i = 0; i < s.length(); i++) { if(s.charAt(i) == '

2022-04-06 10:50:27 207

原创 LeeCode每日一题-反转字符串(二)

1.题目2. 代码class Solution { public String reverseStr(String s, int k) { char[] ch=s.toCharArray(); for(int i=0;i<ch.length;i+=2*k){ int start=i; int end=Math.min(ch.length-1,start+k-1);//关键一步 判断尾数够不够k个来取决end指

2022-04-05 20:21:39 110

原创 LeeCode每日一题-反转字符串

1. 题目2. 代码class Solution { public static void reverseString(char[] s) { int l=0; int r=s.length-1; while(l<r){ swap(s,l,r); l++; r--; } } public static void swap(char[]

2022-04-05 11:18:16 208

原创 JAVA基础-值传递机制

从内存释放角度角度理解,执行结束swap方法以后会自动释放内存,所以会输出main方法中的结果。/* * 方法的形参的传递机制:值传递 * * 1.形参:方法定义时,声明的小括号内的参数 * 实参:方法调用时,实际传递给形参的数据 * * 2.值传递机制: * 如果参数是基本数据类型,此时实参赋值给形参的是实参真是存储的数据值。 */public class ValueTransferTest1 { public static void main(String[] args

2022-04-05 10:29:39 449

原创 LeeCode每日一题-四数之和(双指针)

1. 题目2. 代码class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); for (int i = 0; i < nums.leng

2022-04-02 09:50:14 69

原创 JAVA基础-抽象类(抽象类与抽象方法)

1. 抽象类概念在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。在 Java 中抽象类表示

2022-04-01 15:13:46 512

原创 JAVA基础-关键字final

/* * final:最终的 * * 1.final可以用来修饰的结构:类、方法、变量 * * 2.final用来修饰一个类:此类不能被其他类所继承。 * 比如:String类、System类、StringBuffer类 * 3.final修饰一个方法:final标记的方法不能被子类重写。 * 比如:Object类中的getClass()。 * 4.final用来修饰变量:此时的"变量"(成员变量或局部变量)就是一个常量。名称大写,且只能被赋值一次。 * 4.1

2022-03-31 17:20:02 42

原创 JAVA基础-类的成员之四(代码块)

/* * 类的成员之四:代码块(或初始化块) * * 1.代码块的作用:用来初始化类、对象的 * 2.代码块如果有修饰的话,只能使用 static * 3.分类:静态代码块 vs 非静态代码块 * * 4.静态代码块 * 》内部可以有输出语句 * 》随着类的加载而执行,而且只执行一次 * 》作用:初始化类的信息 * 》如果一个类中,定义了多个静态代码块,则按照声明的先后顺序执行 * 》静态代码块的执行,优先于非静态代码块的执行 * 》静态代码块内只能调用静态的属性、

2022-03-31 16:54:01 47

原创 LeeCode每日一题-三数之和

1. 代码class Solution { public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<>(); Arrays.sort(nums); for (int i = 0; i < nums.length; i++) { if

2022-03-31 11:26:30 87

原创 JAVA基础-Static关键字,单例设计模式

1.static 关键字的使用定义属性:static是静态的,可以用来修饰 属性 方法 代码块 内部类1.1 使用static修饰属性:静态变量(或类变量)1.1.1 属性:是否使用 static 修饰,又分为:静态属性 VS 非静态属性(实例变量)实例变量:我们创建了类的多个对象,每个对象都独立的拥有了一套类中的非静态属性。当修改其中一个非静态属性时,不会导致其他对象中同样的属性值的修饰。(归对象所有)静态变量:我们创建了类的多个对象,多个对象共享同一个静态变量。当通过静态变量去修改某一个变量

2022-03-30 21:28:27 126

原创 JAVA基础-包装类

1.单元测试方法import java.util.Date;import org.junit.Test;/* * java中的JUnit单元测试 * * 步骤: * 1.选中当前项目工程 --》 右键:build path --》 add libraries --》 JUnit 4 --》 下一步 * 2.创建一个Java类进行单元测试。 * 此时的Java类要求:①此类是公共的 ②此类提供一个公共的无参构造器 * 3.此类中声明单元测试方法。 * 此时的单元测试方法:方法

2022-03-30 20:23:44 301

空空如也

空空如也

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

TA关注的人

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