自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 力扣之数组——

这道题的思路容易被题目的意思打乱,两个数比较较小的数移到数组的末尾,我们就会想如何去移动数组元素,因为数组一个元素的下标变了,会波及其他元素,从而给我们的题解带来很大的麻烦,然而,我们需要知道我们实现的功能是返回满足游戏规则的那个赢家,而不是去跟随题目的意思去编写代码,所以我们需要去玩几把游戏,就像题目中给出的示例一样,几乎已经覆盖了所有情况,下面我们来进行列举:首先,无论k值多大,赢家都应该在这个数组中,这是毋庸置疑的遇到数组中的最大值之前都没有出现满足条件的赢家,那么赢家肯定是这个数组的最大值..

2020-10-17 21:20:02 179

原创 力扣之数组——买卖股票的最佳时机

这道题的转换为数学问题就是数组的一前一后如何选出差值最大的值,注意是数组角标大的元素减去小的元素得到的差值。我的思想是:在遍历的过程中,动态的改变数组中最小的值,当然在遍历的时候,最大差值也在不断的更新。class Solution { public int maxProfit(int[] prices) { if(prices.length==0){ return 0; } int max=0; int.

2020-10-16 21:28:53 195

原创 类的成员变量存在JVM的哪块区域

public class A{ public static void main(String[] args){ B b = new B(); }} public class B{ int i; C c; B(){ i = 1; c = new C(); }} public class C{ }记住一个原则即可:方法体中的引用变量和基本类型的变量都在栈中,其他的都在堆中。所以B对象里面的所有东

2020-09-22 17:53:36 1521

原创 Properties类

概述java.util.Properties继承于Hashtable,来表示一个持久的属性集。它使用键值结构存储数据,每个键及其对应的值都是一个字符串。该类也被许多Java类使用,比如获取系统的属性的时候,System.getProperties方法就是返回一个Properties对象。...

2020-09-22 16:28:18 127

原创 IO异常的处理

IO异常的处理在实际的开发中我们不能一直将IO异常进行抛出JDK7前处理之前的入门练习,我们一直把异常抛出,而实际开发中并不能这样处理,建议使用try…catch…finally代码块,处理异常部分,代码使用演示:public static void main(String[] args) { //声明变量 FileWriter fw = null; try { //创建流对象 fw = new Fil

2020-09-22 13:29:04 356

原创 IO流——字符流

字符流当使用字节流读取文本文件的时候,可能会有一个小问题,就是遇到中文字符的时候,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以java提供了一些字符流类,以字符为单位读写数据,专门用于处理文本文件。public void close():关闭此流并释放与此流相关联的任何系统资源public int read():从输入流读取一个字符public int read(char[] cbuf):从输入流中读取一些字符,并将它们存储到字符数组cbuf中。FileReader类

2020-09-20 08:57:31 150

原创 力扣之数组——重复至少K次且长度为M的模式

这道题的题意就是在一个给定的数组中找到

2020-09-17 21:09:57 116

原创 力扣之字符串——一周中的第几天

一周中的第几天这道题的实现过程不难,代码相对来说比较基础,基本思路如下。思路我们必须知道这道题有个给定日期的区间,这个区间的最早时间应该就是1971-1-1,我们必须知道这天是星期几,然后根据这天往后推算,这是前提,经查阅这天是星期五。接下来,根据闰年,平年,一个月30天还是31天,或者又是28或者29天这些情况来进行分别讨论。下面先上代码:class Solution { public String dayOfTheWeek(int day, int month, int year)

2020-09-16 14:01:49 115

原创 IO流——字节流

什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文件的时候,忘记ctrl+s,可能文件就白白编辑了。当你的电脑插入一个U盘的时候,可以把一个视频拷贝到你的电脑硬盘里。那么数据都是在那些设备上呢?键盘,内存,硬盘,外接设备等等。我们把这种数据的传输,可以看作是数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output,即流向内存的输入流,流出内存的输出流。java中I/O操作主要是指使用java.io包下的内容,进行输入,输出操作,输入也叫做读取数据,输出也叫做写出数据。I

2020-09-16 13:12:57 94

原创 Mysql1——查询

Mysql一. 数据库的好处可以持久化数据到本地结构化查询二. 数据库的常见概念DB:数据库,存储数据的容器DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理DBSQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据库软件通用的语言三. 数据库存储数据的特点数据存放到表中,然后表在放到库中。一个库可以有多张表,每张表具有唯一的表名来标识自己表中有一个或多个列,列又称为字段,相当于java中的属性表中的每一行数据

2020-09-14 20:35:44 73

原创 力扣之递归——划分为K个相等的子集

划分为K个相等的子集这道题的意思是将数组中的元素分为K个子集,每个子集的和都相等,显然,数组中的元素不能重复使用,而且每个元素都要用到。首先我们来分析一下这道题的解题思路。思路首先每个子集的总和的值为target=sum(nums)/k ,这个值必须为整数,否则也不符合题意,另外,还有一种情况比较特殊,就是如果数组中的某个值大于target,那肯定也不能满足题意,直接返回false。接下来就是我们应该如何选择每个子集的元素,我们先不想如何写代码,如果让我想的话,先将数组中的元素从第一个开始遍历,

2020-09-13 18:22:07 342

原创 力扣之递归——所有可能的满二叉树

所有可能的满二叉树这道题是求:在给定节点N的个数的情况下,列出所有满二叉树的情况。例如:N=1或者3的时候,只有一种情况,当N=5的时候,就有两种情况了。解题思路:此题的满二叉树要求每个节点恰好由0或者两个孩子节点,那么N只可能是奇数,如果是偶数的话,那么肯定会出现有一棵树只有一个孩子节点。满二叉树的构造,如果你为某个节点分配了一个左子节点,那么你必须为其分配一个右子节点。为了列出所有满二叉树的排列,我们可以为左子树分配x个节点,为右子树分配N-1-x,(这里的-1是为了减去根节点),然后类推

2020-09-13 10:16:50 201

原创 IO流——File

File类java把电脑中的文件和文件夹封装到File类中,我们可以使用File类对文件或者文件夹进行操作,File类在java.io包下。File类是一个与系统无关的类,任何的操作系统都可以使用这个类。我们可以使用File类方法:创建一个文件/文件夹删除文件/文件夹获取文件/文件夹判断文件/文件夹是否存在对文件夹进行遍历获取文件的大小重点:记住这三个单词file文件directory:文件夹/目录path:路径操作路径:路径不能写死了C:\develop\a\a.txt wi

2020-09-10 20:56:47 86

原创 力扣之递归——数值的整数次方

数值的整数次方这道题乍一看很简单,就是用for循环就可以了吗,但是那样做的话就会超出时间限制,既然这题出现在递归,那么我们可以想一想如何使用递归解决这道题。首先来分析一下思路1)当exponent=0的时候,返回1;2)当exponent<0的时候,需要把他转化为正数才能方便计算,同时base要转化成1/base。3)当exponent>0的时候,分为两种情况,一种为奇数,一种为偶数当exponent为偶数的时候,只需要计算Power(base*base,exponent/2)

2020-09-09 09:12:10 129

原创 力扣之递归——重建二叉树

力扣之递归——重建二叉树这道题的思路就是清楚前续遍历与中序遍历之间的联系,怎样将两者联系起来,其实里面会有些规律,其实也不是规律,更多的前续遍历与中序遍历的实质。思路使用指针解决这道题只需要使用三个指针就可以了,分别是前序遍历中使用到的指针pre_start,它代表前续遍历开始的位置;还有两个中序遍历中使用的指针,分别为inStart,inEnd,代表着中序遍历开始和结束的位置,其实就是对中序遍历进行拆解。下面就用一张图来进行分析一下。他的前序遍历是:[3,9,8,5,2,20,15,7]他

2020-09-08 09:27:34 144

原创 力扣之递归——有效井字游戏

这是递归里的一题,等级为中等,这题的题意大概就是在规则范围内完成游戏即可,输赢或者平局只有这三种情况,这里不能出现犯规情况,否则就返回false。分类讨论考虑井字游戏板生效的必要条件:因为所有的玩家轮流放棋,所以X的数量一定大于等于O的数量获胜的玩家一定在自己放棋后赢得比赛1)如果是第一个玩家获胜,则X的数量比O多12)如果是第二个玩家获胜,则X的数量与O相等游戏板上不可能同时出现3个X在一行并且3个O在另一行。因为一旦有玩家获胜,游戏结束,另一名玩家不能再放棋。下面上代码.

2020-09-06 14:05:35 280

原创 Java异常3

Java异常3这一篇准备来写一下java异常有关面试的题目或者定义问题描述及解答try{}里有一个return语句,那么紧跟在这个try后的finally{}中的代码会不会执行,如果执行,是在return之前还是之后?解答:在java语言异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块中的代码都会被执行。由于程序执行return就意味着...

2020-09-05 19:36:45 477

原创 力扣之递归——二叉搜索树节点最小距离

二叉搜索树节点最小距离这题的思路很容易想得到,那就是中序遍历然后相邻值逐一计算,得出最小值,显然这里的递归主要是用在中序遍历上,那么在中序遍历的同时如何能兼顾的到计算呢,其实也很简单,只需要设置一个前驱指针,随着递归的进行不断地移动,代码如下/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *

2020-09-05 14:04:05 131

原创 力扣之递归——汉诺塔问题

这是一道经典的算法题,汉诺塔就是用分治还有递归思想。下面来看解题思路分治思想首先我们拿A上只有两个盘子这种情况做模拟,发现只有一下三步将A上面的盘子放到B将A上面的盘子放到C将B上面的盘子放到C然后我们需要将A上只有两个盘子这种情况推广到A上有N个盘子,也分为一下散步将A上面的N-1个盘子放到B中将A上面的第N个盘子放到C中将B上面的N-1个盘子放到C中边界情况,当A中只有一个盘子将A上面的盘子放到C中下面上代码public void hanota(List<I.

2020-09-05 13:37:34 383

原创 java异常2

java异常2上一节介绍了关于异常的基本概念还有抛出异常和处理异常的方式方法。这一节我想缝缝补补的添加一点注意事项还有一些我觉得比较重要的点。如果在子类中覆盖了一个超类的方法,子类声明的受检查异常(编译异常)不能比超类的方法中声明的受检查异常更通用(也就是说,子类方法中可以抛出更特定的异常,或者根本不抛出任何异常)。特别需要说明的是,如果超类没有抛出任何受检查异常,那么子类也不能抛出任何受检查异常。关于java.lang.Throwable 1.01)Throwable():构造一个新的Th

2020-09-04 16:37:08 193

原创 力扣之递归——最长同值路径

力扣之递归——最长同值路径先来看看题目吧这题的解题思路还是比较巧妙的,就是感觉是那种隔山打牛的招式,下面来分析一波首先,以一个简单的二叉树作为例子如果以某个节点作为根节点寻找最长同值路径,图中的(2),这种是我们比较容易想到的,但是还有一种情况就是,如(1),以某个节点作为中间节点来寻找最长同值路径,这两种情况看着联系不到一起,但是一种巧妙地思路就可以将两者互相联系在一起,思路是就是先求情况(2)那种情形,但是情况(2)是情况(1)的一部分,先上代码吧,太难解释了,递归是自底向上,自左向右/

2020-09-04 14:15:54 232

原创 Java异常1

Java异常异常的概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。同时,调用这个方法的其他代码也无法继续执行,异常处理机制将代码执行交给异常处理器异常的分类Throwable是Java语言中所有错误或者异常的超类下一层为Error和ExceptionErrorError类是指java运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果出现了这样的错误,除了告知用户,剩

2020-09-02 20:08:14 142

原创 java到底是值传递还是引用传递

java到底是值传递还是引用传递说到值传递和引用传递,我们必须要知道两个概念,值类型和引用类型1.值类型值类型指的就是java中的8大基础数据类型:整数型:byte,int,short,long浮点型:float,double字符类型:char布尔类型:boolean从JVM层面来说,值类型值得是在赋值的时候。直接在栈中(Java虚拟机栈)生成值的类型2.引用类型引用类型指的是除了值类型之外的数据类型,例如1)类2)接口3)数组4)字符串5)包装类(Integer,Doubl

2020-09-02 11:20:53 120

原创 力扣之递归——青蛙跳台阶问题

力扣之递归——青蛙跳台阶问题这道题的的基本思路就是斐波那契,可能一眼不能看出来,需要先分析以下,此类求多少种可能性的题目一般都是有递推的,就是f(n),f(n-1),f(1)之间是有联系的。设青蛙跳上n级阶梯的方法有f(n)种,最后一步只有两种情况,跳一级或者跳两级,1.当为1级台阶:剩n-1级台阶,有f(n-1)种跳法;2.当为2级台阶:剩n-2级台阶,有(n-2)种跳法;所以f(n)=f(n-1)+f(n-2),这符合斐波那契数列,所以这题最后结果的求值就变成求斐波那契数列的第n项,只不过

2020-09-02 09:26:38 472

原创 力扣之递归——斐波那契数列

力扣之斐波那契数列这道题的等级依然为简单,题型为递归,但是不递归也可以递归解决斐波那契数列的代码比较简单,如下public int fib(int n){if(n<2){return n;}return fib(n-1)+fib(n-2);}这段代码有个问题,这样递归在数据量很大的时候,计算量就相当的大了,因为需要重复计算很多,如下图这里相同颜色的都是重复计算的数值,当n很大的时候,重复计算的值就越多,所以我们可以利用一个map把计算过的值保存起来,每次计算之前先在map集合

2020-09-01 08:54:40 215 1

原创 java之强制类型转换

java之强制类型转换刚才在看java异常的知识点的时候,发现一个ClassCastException这个异常的时候,突然发现自己的知识有点遗忘了,主要是对象引用之间的强制转换的知识点,这一块还是相当重要的,毕竟经常会需要用到强制转换。引用类型转换发生在在继承中,引用类型转换主要是指对象引用的强制类型转换,在了解对象引用的强制类型转换之前,我们需要知道对象引用能够指向什么样的对象,不管什么样的对象引用,均能够指向其自身的对象实例。...

2020-08-31 13:51:35 175

原创 力扣之递归——二叉搜索树的范围和

二叉搜索树的范围和这道题的我一开始的思路就是中序遍历取出所有数据,然后再挑选,但是这样的效率很低,而且代码量相对较多既然题型是递归,当然需要使用到递归,基本思想是分为三个步骤:1.如果root.val<L,那么符合条件的范围的值就是在root的右子树2.如果root.val>R,那么符合条件的范围的值就是在root的左子树3.如果L<=root.val<=R,那么符合条件的值就是在root的左子树和右子树根据这个思路,很容易想到该如何进行递归,下面上代码class S

2020-08-31 09:21:01 70

原创 力扣之平衡二叉树

平衡二叉树的题,等级为简单先来看看题把这题有两种解法,分别是自下向上和自上向下,都是采用递归,但是效率会有所差别,时间复杂度还是差别蛮大的首先来看看自下而上的方法自底向上递归的方式类似于后序遍历,对于当前遍历到的节点,先递归的判断其左右子树是否平衡,在判断以当前节点为根的子树是否平衡,如果一棵子树是平衡的,就返回其高度,如果一棵子树不平衡,就返回-1,有一颗子树不平衡,那么整棵二叉树一定不平衡。下面,我们来上代码class Solution { public boolean isBal

2020-08-30 09:23:39 153

原创 AVL树(平衡二叉树)

平衡二叉树在创建一棵二叉排序树的时候,我们会发现一种比较极端的情况,就是给你的一个有序数列,然后创建一棵二叉排序树,创建的结果就是根节点的左子树或者右子树其中一个的深度为空,另一个深度很大,此时的二叉排序树就像一个有序的单链表,此时的查找效率就不是我们想要的了,这就很尴尬了,所以此时此时引入平衡二叉树就是为了保证在任何情况下保证二叉查找树的查找效率,平衡二叉树的定义为:树本身为一棵空树或者它的左右两个子树的高度差不超过1,并且左右两颗子树都是平衡二叉树。在二叉查找树的基础上完成平衡二叉树会有几种

2020-08-29 16:43:46 63

原创 力扣之二叉排序树转单链表

二叉排序树转单链表今天刷了一道力扣,等级为简单,思路也比较容易想到,但是我没写出来,哈哈哈哈。题目如下:其实思路很简单,就是中序遍历然后转成单链表吗,可是题目要求转换操作应该是原址的,就是在二叉排序树本身直接进行转换,这就稍微有点困难了。解决这道题中心思想就是中序遍历,可以采用递归,也可以非递归,非递归效率相较于递归低很多。递归public Node convertBiNode(Node root) { Node head = new Node(0);// 单链表的头指针哨兵

2020-08-24 17:14:27 250

原创 二叉查找树(二叉排序树)

二叉查找树二叉树的一个重要应用就是在查找中的使用。下面,先来看一个小例子:给你一个数列(7,3,10,12,5,1,9),要求能够高效的完成对数据的查询和添加,对数据进行这样的处理的方式有很多,例如,数组和链表。首先,来分析数组和链表的优点和缺点1.数组:数组可以分为两种情况(是否进行了排序):(1)未排序数组:数组查找速度慢,添加直接添加在数组尾部,比较快(2)已排序数组:数组查找时可以使用二分查找,查找速度较快,但是插入数据时为了保证数组有序,在插入位置之后的数据均要进行位置移动,比较缓慢。

2020-08-23 20:12:30 129

原创 赫夫曼编码之解压

当我们需要的字符串完成压缩之后,也就是完成赫夫曼编码之后,字符串所需要的编码位数变小了,这样有利于文件的传送,但是光压缩也没有用,如果不能解压的话,那接收方收到的压缩文件将 会无法打开,所以接下来,我们将完成下一步——赫夫曼编码的解压过程...

2020-08-03 11:27:21 112

原创 赫夫曼编码之压缩

赫夫曼编码

2020-07-16 14:08:46 128

原创 赫夫曼树

赫夫曼树关于赫夫曼树,我们先要了解几个名词,它们分别是:1.路径与路径长度:在一棵树中,从一个节点往下可以到达它的孩子或孙子节点之间的通路称为路径。通路中分支的数目称为路径长度,若规定根节点的层数为1,则L层到根节点之间的路径长度为(L-1)。2.节点的权与带权路径长度:若将树中的节点赋给某种含义的数值,则该数值称为该节点的权值。带权路径长度的定义为:从根节点到该节点的路径长度与该节点的权值的乘积。3.树的带权路径长度:该树的所有叶子结点的带权路径长度之和,记为WPL下面给出赫夫曼树的定义:给定

2020-07-16 14:06:35 132

原创 IDEA提交表单时中文乱码

IDEA提交表单时中文乱码,可以这样做,在java类或者Servlet类中添加response.setContentType(“text/html;charset=UTF-8”);

2020-03-09 20:38:56 1004

原创 JDBC详解以及java,API

https://www.cnblogs.com/erbing/p/5805727.html

2020-03-05 14:46:15 101

原创 数据表的创建以及基本数据类型

数据表的创建以及增删改查 首先是数据表的定义: 数据表:1. 是数据库的重要组成部分之一,数据是保存在数据表中2. 数据表由行(row)和列(column)来组成3. 每个数据表至少有一列,但可以有零行一行或者多行组成4. 表名要求唯一,不要包含特殊字符,最好含义明确`` 其次是关于数据表的创建及一些基本应用 1.下面我将通过一段代码展示数据库,数据表的创...

2020-02-25 21:19:38 1197

空空如也

空空如也

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

TA关注的人

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