自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java算法--第四章--多维数组和矩阵(6)题目:子矩阵最大累加和

Java算法–第四章–多维数组和矩阵(6)题目:子矩阵最大累加和给定一个矩阵matrix,其中的值有正、有负、有0,返回子矩阵的最大累加和。例如,matrix为∶-1 -1 -1-1 2 2-1 -1 -1其中最大累加和的子矩阵为︰2 2所以返回4。代码:package matrix;import java.util.Arrays;public class MaxSubMatrix { public static void main(String[] args) { i

2021-04-17 14:54:30 217

原创 Java算法--第四章--多维数组和矩阵(5)题目:子数组最大累加和

Java算法–第四章–多维数组和矩阵(5)题目:子数组最大累加和给定一个数组arr,返回子数组的最大累加和例:arr=[1,-2,3,5,-2,6,-1];所有的子数组中[3,5,-2,6]可以累加出最大的和12,所以返回12代码:package matrix;public class MaxSumArray { public static void main(String[] args) { int[] arr = { 1, -2, 3, 5, -2, 6, -1 }; int m

2021-04-17 14:30:12 194

原创 Java算法--第四章--多维数组和矩阵(4)题目:边界为1的最大子方阵

Java算法–第四章–多维数组和矩阵(4)题目:边界为1的最大子方阵给定一个N×N的矩阵matrix,在这个矩阵中,只有O和1两种值,返回边框全是1的最大正方形的边长长度。例如∶{0,1,1,1,1},{0,1,0,0,1},{0,1,0,0,1},{0,1,1,1,1},{0,1,0,1,1}其中,边框全是1的最大正方形的大小是4*4,返回4代码:package matrix;public class MaxSquare { public static void main(Str

2021-04-17 13:16:32 278

原创 Java算法--第四章--多维数组和矩阵(3)题目:Z形打印

Java算法–第四章–多维数组和矩阵(3)题目:Z形打印代码:package matrix;public class PrintZMatrix { public static void main(String[] args) { int[][] matrix = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 },

2021-04-17 11:48:23 117

原创 Java算法--第四章--多维数组和矩阵(2)题目:0所在得行列清零

Java算法–第四章–多维数组和矩阵(2)题目:0所在得行列清零如果矩阵中某个元素为0,则将其所在的行和列清零1 2 3 45 6 0 89 0 11 1213 14 15 16变为:1 0 0 40 0 0 00 0 0 013 0 0 16代码:package matrix;import java.util.Arrays;public class ClearZeroInArr { public static void main(String[] args) { in

2021-04-17 10:36:04 69

原创 Java算法--第四章--多维数组和矩阵(1)顺时针打印二维数组

Java算法–第四章–多维数组和矩阵(1)顺时针打印二维数组代码:package matrix;public class Print20Arr { public static void main(String[] args) { int[][] matrix = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10 }, { 11, 12, 13, 14, 15 }, { 16, 17, 18, 19, 20 }, { 21, 22, 23, 24, 25 }

2021-04-17 10:19:49 306 1

原创 Java算法--第三章--排序(19)题目:数组能排成的最小数(特殊排序)

Java算法–第三章–排序(19)题目:数组能排成的最小数(特殊排序)1.输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。2.例如输入数组{3,32,321},则打印出这3个数字能排成的最小数字为:321323...

2021-04-16 20:29:41 92

原创 Java算法--第三章--排序(20)题目:数组的包含

Java算法–第三章–排序(20)题目:数组的包含输入两个字符串str1和str2,请判断str1中的所有字符是否都存在str2中代码:package sort;import java.util.Arrays;public class ContainAll { public static boolean check(String s1, String s2) { char[] s2_arr = s2.toCharArray(); Arrays.sort(s2_arr); for

2021-04-16 20:29:27 43

原创 Java算法--第三章--排序(14)概述

Java算法–第三章–排序(14)概述排序算法的总结:1.冒泡谁大谁上,每一轮都把最大的顶到天花板效率太低O(n2)–掌握swap选择排序,效率较低,但经常用它内部的循环方式来找最大值和最小值–怎么一次性求出数组的最大值和最小值2.插排虽然平均效率低,但是在序列基本有序时,它很快,所以也有其适用范围Arrays这个工具类在1.7里面做了较大改动3.希尔,是插排的改良,对空间思维训练有帮助4.快排是软件工业中最常见的常规排序法,其双向指针扫描和分区算法是核心,往往用于解决类似问题,特别地pa

2021-04-15 20:12:20 92

原创 Java算法--第三章--排序(3)归并排序

Java算法–第三章–排序(3)归并排序1.归并排序Merge Sort)算法完全依照了分治模式(1)分解:将n个元素分成各含n/2个元素的子序列;(2)解决:对两个子序列递归地排序;(3)合并:合并两个已排序的子序列以得到排序结果2.和快排不同的是:归并的分解较为随意,重点是合并代码:package sort;import java.util.Arrays;public class NormalizingSort { public static void main(String[]

2021-04-05 12:56:25 80 1

原创 Java算法--第三章--排序(1)分治法

Java算法–第三章–排序(1)分治法一、分治法1.分治法(divide and conquer, D&C)︰将原问题划分成若干个规模较小而结构与原问题一致的子问题﹔递归地解决这些子问题,然后再合并其结果,就得到原问题的解。2.容易确定运行时间,是分治算法的优点之一。3.分治模式在每一层递归上都有三个步骤(1)分解(Divide) :将原问题分解成一系列子问题;(2)解决(Conquer):递归地解各子问题。若子问题足够小,则直接有解;(3)合并(combine):将子问题的结果合并成

2021-04-03 18:46:24 205 1

原创 Java算法--第二章--查找与排序(10)题目:涉及一个高效的求a的n次幂的算法

Java算法–第二章–查找与排序(10)题目:涉及一个高效的求a的n次幂的算法

2021-04-03 15:50:46 59

原创 Java算法--第二章--查找与排序(8)题目:在有空字符穿的有序字符串数组中查找

Java算法–第二章–查找与排序(8)题目:在有空字符穿的有序字符串数组中查找题目:有个排序后的字符串数组,其中散布着一些空字符串,编写一个方法,找出给定字符串(肯定不是空字符串)的索引。...

2021-04-03 14:30:08 121 1

原创 Java算法--第二章--查找与排序(7)题目:旋转数组的最小数字(改造二分法)

Java算法–第二章–查找与排序(7)题目:旋转数组的最小数字(改造二分法)题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.代码:package section02;public class 旋转数组的最小数字 { public static void main(String[] args) { int[] arr = { 5

2021-03-31 16:10:08 71

原创 Java算法--第二章--查找与排序(6)题目:小白上楼梯(递归)

Java算法–第二章–查找与排序(6)题目:小白上楼梯(递归)题目:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式?代码:package section02;import java.util.Scanner;public class 小白上楼梯 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = s

2021-03-31 15:54:28 87

原创 Java算法--第二章--查找与排序(4)希尔排序

Java算法–第二章–查找与排序(4)希尔排序希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序思路:如序列 9 8 7 6 5 4 3 2 11.确定一个增量序列,如:4(length/2) 2 1,从大到小使用增量2.使用第一个增量,将序列化分为若干个子序列,下标组合为0-4-8,1-5,2-6,3-73.以此对子序列使用过直接插入排序法4.使用第二个增量,将序列华为若干个子序列(0-2-4-6-8),(1-3-5-7)5.以此对子序列使用这季节插

2021-03-29 20:22:38 64

原创 Java算法--第二章--查找与排序(3)二分法查找递归方法

Java算法–第二章–查找与排序(3)二分法查找递归方法全范围的二分查找等价于三个子问题:1.左边找(递归)2.中间比3.右边找(递归)注意:前提是所查找的内容必须是有序的,且左边和右边查找只取其中的一个分支代码:package section02;public class 二分法查找 { public static void main(String[] args) { int[] arr = new int[] { -98, -34, 2, 34, 54, 66, 79, 105

2021-03-28 14:12:01 108

原创 Java算法--第二章--查找与排序(2)递归基础--佩波那契&最大公约数&插入排序&汉诺塔

Java算法–第二章–查找与排序(2)递归基础

2021-03-28 13:44:16 98

原创 Java算法--第二章--查找与排序(1)递归基础

Java算法–第二章–查找与排序(1)递归基础1.阶乘2.打印i-j3.对arr的所有元素求和4.反转字符串package section02;public class java1 { public static void main(String[] args) { } /* * 阶乘: * 找重复:n*(n-1)的阶乘,求n-1的阶乘是原问题的重复(规模更小)----子问题 * 找变化:变化的量应该作为参数 * 找边界:出口 */ static int

2021-03-24 16:53:51 63

原创 Java算法--第一章--位运算符(8)出现k次与出现1次

Java算法–第一章–位运算符(8)出现k次与出现1次题目:数组中只有一个数出现了1次,其他的数都出现了k次,请输出只出现了1次的数。补充知识点:(1)2个相同的二进制数做不进位加法,结果为零;(2)10个相同的十进制数做不进位加法,结果位零;(3)k个相同的k进制数做不进制加法,结果为零代码:package exer1;public class 出现k次和出现1次 { public static void main(String[] args) { int[] ar

2021-03-22 20:03:04 232

原创 Java算法--第一章--位运算符(7)0~1间浮点实数的二进制表示

Java算法–第一章–位运算符(7)0~1间浮点实数的二进制表示题目:给定一个介于0和1之间的实数,(如0.625),类型为double,打印他的二进制表示(0.101,因为小数点后的二进制分别表示0.5,0.25,0.125……)。如果该数字无法精确的用32位以内的二进制表示,则打印“ERROR”代码:package exer1;public class 零一间浮点实数的二进制表示 { public static void main(String[] args) { d

2021-03-22 19:16:56 84

原创 Java算法--第一章--位运算符(6)将整数的奇偶位互换

Java算法–第一章–位运算符(6)将整数的奇偶位互换题目:将一个数的二进制形式中,奇偶位互换,得出新的一个数

2021-03-22 18:52:51 181

原创 Java算法--第一章--位运算符(5)是不是2的整数次方

Java算法–第一章–位运算符(5)是不是2的整数次方题目:用一条语句判断一个整数是不是2的整数次方(本方法:除2判断。。。)提示:2的整数次方在二进制中只有1个1代码 :package exer1;import java.util.Scanner;public class 是不是2的整数次方 { public static void main(String[] args) { Scanner sc = new Scanner(System.in);

2021-03-21 20:09:30 68

原创 Java算法--第一章--位运算符(4)二进制中1的个数

Java算法–第一章–位运算符(4)二进制中1的个数题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例:9的二进制表示为1001,有2位是1.方法1:package exer1;import java.util.Scanner;public class 二进制中1的个数 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int

2021-03-21 20:01:57 70

原创 Java算法--第一章--位运算符(2)唯一成对的数

题目:1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其它均只出现一次。每个数组元素只能访问一次,设计一个算法,把它找出来;不用辅助存储空间,能否设计一个算法实现?(写的代码过于粗糙,还有很多地方有待改善……)代码:package exer1;import java.util.Random;public class 唯一成对的数 { public static void main(String[] args) { int N = 6;

2021-03-21 17:45:40 126

原创 15-7 反射 ---- 反射的应用:动态代理(3)AOP与动态代理的举例

15-7 反射 ---- 反射的应用:动态代理(3)AOP与动态代理的举例代码:package java4;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;//动态代理举例interface Human { String getBelif(); void eat(String food);}//被代

2021-02-25 14:28:55 61 1

原创 15-7 反射 ---- 反射的应用:动态代理(2)举例②动态代理

15-7 反射 ---- 反射的应用:动态代理(2)举例②动态代理代码:package java4;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;//动态代理举例interface Human { String getBelif(); void eat(String food);}//被代理类c

2021-02-25 14:28:51 45 1

原创 15-7 反射 ---- 反射的应用:动态代理(2)举例①静态代理

15-7 反射 ---- 反射的应用:动态代理(2)举例①静态代理代码:package java4;//静态代理举例//代理类和被代理类在编译期间,就确定下来了interface ClothFactory{ void produceCloth();}//代理类class ProxyClothFactory implements ClothFactory{ private ClothFactory factory;//用被代理类对象进行实例化 public P

2021-02-25 14:28:47 62

原创 15-7 反射 ---- 反射的应用:动态代理(1)概述

15-7 反射 ---- 反射的应用:动态代理(1)概述一、代理设计模式1.原理:使用一个代理将对象包装起来, 然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。2.之前为大家讲解过代理机制的操作,属于静态代理,特征是代理类和目标对象的类都是在编译期间确定下来,不利于程序的扩展。同时,每一个代理类只能为一个接口服务,这样一来程序开发中必然产生过多的代理。最好可以通过一个代理类完成全部的代理功能。3.动态代理是指客户通过代理类来调用其它对

2021-02-25 14:28:39 64 1

原创 15-6 反射 ---- 调用运行时类的指定结构

15-6 反射 ---- 调用运行时类的指定结构一、调用指定方法通过反射,调用类中的方法,通过Method类完成。步骤:1.通过Class类的getMethod(String name,Class…parameterTypes)方法取得一个Method对象,并设置此方法操作时所需要的参数类型。2.之后使用**Object invoke(Object obj, Object[] args)**进行调用,并向方法中传递要设置的obj对象的参数信息。二、Object invoke(Object obj

2021-02-24 21:12:41 49

原创 15-5 反射 ---- 获取运行时类的完整结构(1)概述

15-5 反射 ---- 获取运行时类的完整结构(1)概述使用反射可以取得:1.实现的全部接口:public Class<?>[] getInterfaces()确定此对象所表示的类或接口实现的接口。2.所继承的父类:public Class<? Super T> getSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型)的父类的Class。3.全部的构造器(1)public Constructor< T >[] getCons

2021-02-24 17:49:41 45

原创 15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时类的③其他

15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时类的③其他1.构造器2.父类3.带泛型的父类4.父类的泛型5.接口6.所在的包7.注解代码:package java3;import java2.Person;import org.junit.Test;import java.lang.annotation.Annotation;import java.lang.reflect.Constructor;import java.lang.reflect.Par

2021-02-24 17:49:35 35

原创 15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时类的②方法结构

15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时类的②方法结构代码:package java3;import java2.Person;import org.junit.Test;import java.lang.annotation.Annotation;import java.lang.reflect.Method;import java.lang.reflect.Modifier;//获取运行时类的方法结构public class MethodTest {

2021-02-24 17:49:20 39

原创 15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时类的①属性结构

15-5 反射 ---- 获取运行时类的完整结构(2)获得当前运行时的①属性结构代码:package java3;import java2.Person;import org.junit.Test;import java.lang.reflect.Field;import java.lang.reflect.Modifier;//获得当前运行时的属性结构public class FieldTest { @Test public void test1() {

2021-02-24 17:49:13 55

原创 15-4 反射 ---- 创建运行时类的对象 & 体会反射的动态性

15-4 反射 ---- 创建运行时类的对象 & 体会反射的动态性一、newInstance():1.调用此方法,创建对应的运行时类的对象。内部调用了运行时类的空参的构造器。2.要想此方法正常的创建运行时类的对象,调用Class对象的newInstance()方法,要求:(1)运行时类必须提供空参的构造器(2)空参的构造器的访问权限得够。通常,设置为public。3.在javabean中要求提供一个public的空参构造器。原因:(1)便于通过反射,创建运行时类的对象(2)便于子类继

2021-02-24 17:49:08 81

原创 15-3 反射 ---- 类的加载 与ClassLoader的理解(3)使用ClassLoader加载配置文件

15-3 反射 ---- 类的加载 与ClassLoader的理解(3)使用ClassLoader加载配置文件代码:package java1;import org.junit.Test;import java.io.IOException;import java.io.InputStream;import java.util.Properties;public class ClassLoaderTest { //Properties:用来读取配置文件 @Test

2021-02-24 17:49:02 123

原创 15-3 反射 ---- 类的加载 与ClassLoader的理解(2)ClassLoader

15-2 反射 ---- 类的加载 与ClassLoader的理解(2)ClassLoader一、了解:ClassLoader类加载器作用是用来把类(class)装载进内存的。 JVM 规范定义了如下类型的类的加载器。二、• //1.获取一个系统类加载器• ClassLoader classloader = ClassLoader.getSystemClassLoader();• System.out.println(classloader);• //2.获取系统类加载器的父类加载器,即扩展

2021-02-24 17:48:58 90

原创 15-3 反射 ---- 类的加载 与ClassLoader的理解(1)类的加载

15-2 反射 ---- 类的加载 与ClassLoader的理解(1)类的加载一、了解:类的加载过程当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过如下三个步骤来对该类进行初始化。1.加载:将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区的运行时数据结构,然后生成一个代表这个类的java.lang.Class对象,作为方法区中类数据的访问入口(即引用地址)。所有需要访问和使用类数据只能通过这个Class对象。这个加载的过程需要类加载器参与。2.链接:将Java

2021-02-23 21:04:17 76

原创 15-2 反射 ---- 理解Class类并 获取Class的实例

15-2 反射 ---- 理解Class类并 获取Class的实例一、Class 类 :在Object类中定义了以下的方法,此方法将被所有子类继承:1.public final Class getClass()以上的方法返回值的类型是一个Class类,此类是Java反射的源头,实际上所谓反射从程序的运行结果来看也很好理解,即:可以通过对象反射求出类的名称。2.象照镜子后可以得到的信息:某个类的属性、方法和构造器、某个类到底实现了哪些接口。对于每个类而言,JRE 都为其保留一个不变的 Class 类

2021-02-23 21:04:11 209

原创 15-1 反射 ---- Java反射机制概述

15-1 反射 ---- Java反射机制概述一、Java Reflection1.Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。2.加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。

2021-02-23 21:04:06 87 1

空空如也

空空如也

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

TA关注的人

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