
java
一直开心
这个作者很懒,什么都没留下…
展开
-
(二叉树学习)-----(中序)线索化二叉树------2020.3.7
1、线索化二叉树:1)线索化二叉树:把二叉树中的空闲空间利用起来,例如4的左子树为空,右子树为空,右子树设为后继节点2,5的左子树设为前驱节点---2,5的右子树设为后继节点----1。2)线索化二叉树遍历时,不再需要递归,递归所占用的空间大,利用while循环就可以解决。2、代码分享:package ThreadTree;import erchashu.TreeN...原创 2020-03-07 20:31:43 · 204 阅读 · 0 评论 -
(二叉树学习)----顺序存储------2020.3.7
顺序存储的二叉树通常只考虑完全二叉树,利用数组存储第n个元素的左子节点是:2^n+1第n个元素的右子节点是:2^n+2第n个元素的父节点是:(n-1)/2n为数组的index;代码分享:package ArrayBinaryTree;//顺序存储的二叉树public class ArrayBinaryTree { int[] data; ...原创 2020-03-07 16:11:33 · 220 阅读 · 0 评论 -
二叉树学习笔记1---链式存储----2020.3.6
二叉树的概述:1)二叉树:任何一个节点的子节点数量不超过2 二叉树的子节点分为左节点和右节点。2)满二叉树:所有叶子节点都在最后一层,且节点的总数是:2^n-1,n为树的高度。3)完全二叉树:所有的叶子节点都在最后一层或者倒数第二层,且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续。4)二叉树的存储结构:链式存储和顺序存储链式存储代码分享:package...原创 2020-03-06 19:17:58 · 156 阅读 · 0 评论 -
Java: LinkedListDemo学习----2020.3.5
package ListDemo;import java.util.*;/*//linkedList它内部封装的是双向链表数据结构//每个节点是一个Node对象,Node对象中封装的是你要添加的元素,还有一个指向上一个Node对象的应用和指向下一个Node对象的引用//不同的容器有不同的数据结构,不同的数据结果操作起来性能不同//链表数据结构,做插入和删除的效率比较高,但查询效率低...原创 2020-03-05 20:15:41 · 175 阅读 · 0 评论 -
Java:ArrayListDemo学习2020.3.5
package ListDemo;import java.util.ArrayList;import java.util.List;import java.util.Objects;/*当我们调用无参构造方法来构造一个ArrayList对象的时候,它会在内部分配一个初始大小为10的一个Object类型的数组。当添加的数据容量超过数组大小的时候,会产生一个新的数组,新数组的大小...原创 2020-03-05 20:13:20 · 150 阅读 · 0 评论 -
Java集合框架:List、Set、Map的选择
Java集合框架: 1)所谓的框架就是一个类库的集合。集合框架就是一个用来表示和操作集合的统一的架构,它包含了实现集合的接口与类。 2)集合框架中不同的集合类有各自不同的数据结构,所以在使用中要根据应用的性能要求来选择不同的集合类。 3)集合类存在java.util包中。List:1、List接口扩展了Collection接口,特点:有序且可重复2、Set接口扩展了Col...原创 2020-03-05 13:11:44 · 229 阅读 · 0 评论 -
(算法学习)暴力解决最大公共子串的长度及个数
求字符串1与字符串2的最大公共子串的长度及此长度最大公共子串的个数。实例:输入:abcdefgEebcdfg输出:3 1输入:abcdefg abcddefg输出:4 2思路:1)字符串1的子串2)字符串的子串3)找两个子串的相同子串,即公共子串4)再找最长公共子串的长度和个数代码分享:package StringDemo;//z最大公共...原创 2020-03-02 19:58:28 · 537 阅读 · 0 评论 -
(算法学习)兵乓球比赛的分制
乒乓球比赛分为11分制和21分制,(得分达到了11分或者21分为赢一局)下面输入比赛的获胜情况,分别输出11分制和21分制的比赛结果其中输入数据中W代表甲得分,L代表乙得分,E代表输入结束,可以多行输入,并忽视E以后的内容。例如:输入: WWWWWWWWWWWWWWWWWWWW WWWWWLEEE输出:11分制 第1局: 11:0 第2局:11:0 第3局:3:1 ...原创 2020-03-02 17:54:25 · 1240 阅读 · 0 评论 -
将字符串打印成W型
思路分析:1) 当n=2: 行数就是从0变成1,从1变成0,列数则一直增加,这里我们采用二维数组来存取,行数就是n(输入决定),列数就是字符串的长度。2)当n>2: 我们以3为例子,行数变化的规律:从0-2;2-0;列数一直增加。这里我们用flag来标注行数是增加还是减少。3) 输出,数组的其他位置为空char c='\0';代码分享:...原创 2020-03-01 12:31:13 · 775 阅读 · 0 评论 -
(算法笔记)碎片化字符串
输入一个由小写字母组成的字符串,可以看作是若干包含相同字母的碎片组合而成。例如aaaabbaaabbc,就可以看作是由4个碎片“aaaa"\"bb"\"aaa"\"c"组成;输出要求:将各个碎片按照字典序输出,每个碎片占一行,注意相同的碎片只能出现一次。输入:abbaaacadd输出:a aaa bb c dd输入:aabbcc输出:aa...原创 2020-02-29 12:44:18 · 405 阅读 · 0 评论 -
对于输入[1 2], [3 4], [5 6] 的处理
package StringDemo;//对于[1,2],[3,4],[5,6]的输入如何把数据提出来import java.util.*;public class StringDemo10 { public static void main(String[] args){ String str="[1,2],[3,4],[5,6]"; //去首尾...原创 2020-02-28 15:41:45 · 567 阅读 · 0 评论 -
(算法笔记)排列组合---递归实现
package CollectionDemo;//Java实现排列组合--递归//参考:https://blog.youkuaiyun.com/chunrudikai/article/details/60958993?utm_source=appimport java.util.ArrayList;import java.util.List;public class PailiexuheDemo...转载 2020-02-28 13:54:36 · 237 阅读 · 0 评论 -
(算法笔记)最长上升子序列 // 最长递增子序列
什么是最长上升子序列?就是在一个序列中求出一段不断严格上升的部分,不一定连续。比如2,3,4,7和2,3,4,6就是序列2,5,3,4,1,7,6的两种选取方案,最长的长度是4.输入一个序列,输出最长上升子序列的长度。输入:2 5 3 4 1 7 6输出:最长长度为4输入:1 3 2 5 6 4 9输出:5输入:1 2 3 4 5 6 7输出:7输入:7 6 5 4 3 2 1输出...原创 2020-02-25 18:36:51 · 311 阅读 · 0 评论 -
StringBuilder方法学习
package StringDemo;public class StringBuilderDemo1 { public static void main(String[] args){ StringBuilder sb=new StringBuilder();//无参构造方法 System.out.println(sb.length());//0 ...原创 2020-02-19 17:21:31 · 164 阅读 · 0 评论 -
Collections.sort()排序代码案例
1、案例:Person对象(名字,id,年龄)要求按照,年龄从小到大排序,年龄相等,按照名字的字典顺序de倒序排序2、案例设计: 1)使用ArrayList存储Person对象, 2)利用Collections.sort()进行排序 3)输出结果3、代码分享:package CollectionDemo;import java.ut...原创 2020-02-16 17:29:53 · 461 阅读 · 0 评论 -
接口实现的两种方式(补充接口知识点)
1、显式实现interface Runner{ public void run();}class Kid implements Runner{ @Override public void run() { System.out.println("小孩在疯跑!!!"); }}public class InterfaceDemo1 { ...原创 2020-02-16 16:19:35 · 562 阅读 · 0 评论 -
Collections类的常用方法以及与Collection接口和Comparator接口的区别
1、Collections是一个类;public class Collectionsextends Object此类仅由静态方法组合或返回集合。 它包含对集合进行操作的多态算法,“包装器”,返回由指定集合支持的新集合,以及其他一些可能的和最终的。2、常用方法:可以查看APIpackage CollectionDemo;import java.util.Arra...原创 2020-02-16 13:12:38 · 197 阅读 · 0 评论 -
Java中compareTo()用法
1、字符串比较 1)当两个字符串完全相同时,返回0 2)当两个字符串,例如 ccc 与 cccbbb,cccbbb与ccc比较:3; 返回两个字符串的长度差值 3)当两个字符串,例如ddd比ccc的结果为:1 ,返回这两个字符的ascii值的差值,这里是第一个的d与c的ascii值的差值。2、Integer比较: 1)对比两个数字:相...原创 2020-02-15 14:34:33 · 1957 阅读 · 1 评论 -
JAVA的接口学习
1、接口的定义:JAVA接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的定义没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的功能。2、格式[public] interface 接口名称 []extends 父接口1,父接口2,父接口3]{//静态常量[public] [static] [final] 数据类型 常量名=常量值...原创 2020-02-14 14:41:27 · 154 阅读 · 0 评论 -
JAVA static 方法 无法从静态上下文中引用非静态方法 和属性
一个方法用static 修饰,便是静态方法或者类方法。静态方法不属于特定对象。由于static方法在加载class时首先完成,比构造方法早,此时非static的属性和方法还没有完成初始化。所以:在static方法内部无法直接调用非static的方法,可以通过先实例化对象,再通过该对象调用非static方法,在非static方法中可以调用static方法,通过直接调用 方法名()...原创 2020-02-14 10:06:51 · 5066 阅读 · 0 评论 -
JAVA多态性的一个例子
代码分享:import javax.xml.catalog.Catalog;public class DuotaiTest { public static void main(String[] args){ //func(new Animal()); //Error:(3, 9) java: 无法从静态上下文中引用非静态 方法 func(Anima...原创 2020-02-13 18:43:46 · 266 阅读 · 0 评论 -
Java面向对象特征之三:多态性
多态性:可以理解为一个事物的多种表型形态1、方法的重载和方法的重写2、对象的多态性---可以直接应用在抽象类和接口上3、子类对象的多态性 子类对象的多态性使用的前提:1)要有类的继承 2)要有子类对父类进行重写4、程序运行分为编译状态和运行状态 对于多态性来说,编译时,“看左边”,看此引用变量理解为父类的类型 运行时,“看...原创 2020-02-13 17:03:45 · 173 阅读 · 0 评论 -
JAVA的面向对象的三大特性之一:继承
1、继承的定义: 描述事物的时候有几个类有重复的属性和方法,我们可以采用继承的方法来设计。2、使用class A extends B 实现类的继承。 子类, A 父类,B3、子类继承父类后,子类只能获得父类中非private属性,如果想要继承就得提供公共的set/get方法。 方法也是只能是公有的,私有的方法无法继承下来。4、子...原创 2020-02-12 19:10:07 · 180 阅读 · 0 评论 -
JAVA的面向对象三大特性之一:封装
面向对象三大特征:封装、继承、多态封装:1、封装的定义:隐藏类的内部信息,不允许外部程序直接访问,而是通过方法对属性进行赋值。2、封装的操作步骤:1)将属性设置为private,只能在当前类中使用,private int age;2)设置对应属性的方法(set方法和get方法)public void setAge(int a){}public int...原创 2020-02-12 14:12:00 · 172 阅读 · 0 评论 -
this关键字
1、this关键字可以访问当前类中的属性(也叫成员变量或实例变量) 如:this.id 表示当前这个对象的id属性2、this关键字可以访问当前类中的方法(也叫成员方法或实例方法) 如:dispaly(); 等价于this.display(); 注意:1)如果在同一个类中访问成员(成员变量和成员方法),并且成员没有使用static修饰,则默认前面添加this...原创 2020-02-12 13:37:20 · 587 阅读 · 0 评论 -
static关键字(代码练习)
public class StaticTest { String name;//实例属性,也叫非静态属性 static String address="山西省";//静态属性,也叫类的属性 //构造方法 StaticTest(String name){ this.name=name; } //静态方法 public s...原创 2020-02-11 17:57:46 · 314 阅读 · 0 评论 -
static关键字
1、static 关键字可以修饰属性修饰后再方法区中开辟空间,并且所有对象都可以访问。与类同生死,生命周期长,也就是类存在,static修饰的成员(成员变量和成员方法)就存在,但是对象并不一定存在。如果对象存在则类必定存在,因此得到使用static修饰的成员,可以使用类名.成员或者对象名.成员。当对象为null时,可以访问static修饰的成员。2、static 关键字可以修饰...原创 2020-02-11 17:27:40 · 128 阅读 · 0 评论 -
算法的空间复杂度
空间复杂度:算法的存储变量包括:1、程序本身所占的空间;2、输入数据所占空间;3、辅助变量所占空间;输入数据所占空间只取决于问题本身,和算法无关,则只需要分析除了输入和程序之外的辅助变量所占的额外空间。空间复杂度是对一个算法在运行过程中临时占用的存储空间大小的量度,一般也做为问题规模n的函数,以数量级形式给出,记作:S(n)=O(g(n))空间复杂度分析1:in...原创 2019-12-17 10:40:55 · 2249 阅读 · 0 评论 -
算法的时间复杂度
1、时间频度的基本概念:时间频度:一个算法的花费的时间与算法的语句的执行次数成正比。一个算法执行次数越多,花费的时间越多。一个算法中的语句执行次数称为语句频度或时间频度,记作:T(n)。举例说明:计算1+2+3+。。。+100,代码1:int total=0;int end=100;for(int i=1;i<100;i++){total=total+i;...原创 2019-12-16 19:01:31 · 280 阅读 · 0 评论 -
递归笔记1:的应用场景和调用机制
1、递归的概念:递归就是自己调用自己,每次调用时,传入不同的变量,递归有助于解决复杂的问题,同时让代码变得简洁。2、递归的调用机制打印问题package com.ethjava;public class diguidayin { public static void main(String[] args){ test(4); } pub...原创 2019-12-16 18:13:27 · 182 阅读 · 0 评论 -
(递归上机)阶乘的案例
package com.ethjava;//递归的第一个例子//n!=n*n-1*n-2*...*1;public class jiecheng { public static void main(String[] args) { getJieChrng(5); } public static int getJieChrng(int n) {...原创 2019-12-16 14:08:44 · 210 阅读 · 0 评论 -
(递归上机)汉诺塔问题
问题描述:汉诺塔问题是由很多放置在三个塔座上的盘子组成的一个古老的难题,如下图所示,所有的盘子的直径是不同的。并且盘子中央都有一个洞使得它刚好可以放在塔座上,所有的盘子刚开始都是在a座上,这个难题的目标是将左右的盘子都从塔座a,移到塔座c上,每次只可以移动一个盘子,并且任何一个盘子都不可以放置在比它小的盘子上,链接:https://blog.youkuaiyun.com/qq_40688338/ar...原创 2019-12-16 14:04:18 · 164 阅读 · 0 评论 -
Math的常用函数复习
package com.ethjava;import java.math.*;public class mathhanshulianxi { public static void main(String[] args) { int num = 36; Double gen = Math.sqrt(36); System.out.pr...原创 2019-12-13 12:05:26 · 158 阅读 · 0 评论 -
char字符型与int型的相互转换
char[] ch = {'a', 'b', 'c'};System.out.println(ch[0]);//achar fg = 97;System.out.println(fg);//achar f = '9';System.out.println(f);//9//int 转换为char型;// int类型转char类型,将数字加一个‘0’,并强制类型转换为char即可。i...原创 2019-12-13 10:35:30 · 1734 阅读 · 0 评论 -
如何打印数组内容
代码分享:package com.ethjava;import java.util.Arrays;//如何打印数组内容public class charlianxi { public static void main(String[] args) { //数组初始化的三种方式 int[] a={1,2,3,4,49}; int[...原创 2019-12-11 18:36:44 · 2226 阅读 · 0 评论 -
(上机)哈夫曼树
1、哈夫曼树的定义:给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。来自百度百科2、构造:假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:(1) 将w1、w...原创 2020-02-29 17:17:54 · 176 阅读 · 0 评论 -
HashSet实现排序的两种方式
代码分享:package com.ethjava;//hashSet实现排序//treeSet实现倒序import java.util.*;public class setPaixu { public static void main(String[] args){ Set<String> hashSet=new HashSet<>(...原创 2019-12-09 18:21:03 · 4462 阅读 · 0 评论 -
链表的反转
1、思路:就地反转:首先设置两个变量:pre: 当前节点的前一个节点,currentNode: 当前节点,nextNode: 当前节点的后一个节点。2、代码分享package com.ethjava;class Node { //节点内容 int data; //下一个节点 Node next;//注意存储的下一个节点是N...原创 2019-12-09 15:05:46 · 126 阅读 · 0 评论 -
sc.next();nextLine();sc.nextInt()学习笔记
package com.ethjava;import java.util.*;public class shurulinxi { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); ...原创 2019-12-04 10:55:40 · 3616 阅读 · 0 评论 -
String的一些常见函数总结复习
package com.ethjava;public class Stringlianxi { public static void main(String[] args) { String str = "You are the great one!"; //substring(int beginIndex) 形式 //此方式用于提取...原创 2019-12-03 21:16:43 · 199 阅读 · 0 评论