自定义博客皮肤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)
  • 收藏
  • 关注

原创 NC110 旋转数组

描述一个数组A中存有 n 个整数,在不允许使用另外数组的前提下,将每个整数循环向右移 M( M >=0)个位置,即将A中的数据由(A0 A1 ……AN-1 )变换为(AN-M …… AN-1 A0 A1 ……AN-M-1 )(最后 M 个数循环移至最前面的 M 个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?数据范围:0 < n \le 100<n≤10,0 \le m \le 10000≤m≤1000进阶:空间复杂度 O(1)O(1),时间复杂度 O

2022-01-07 13:32:53 609

原创 NC49 最长的括号子串

描述给出一个长度为 n的,仅包含字符 '(' 和 ')' 的字符串,计算最长的格式正确的括号子串的长度。例1: 对于字符串 "(()" 来说,最长的格式正确的子串是 "()" ,长度为 2 .例2:对于字符串 ")()())" , 来说, 最长的格式正确的子串是 "()()" ,长度为 4 .字符串长度:0 \le n \le 5*10^50≤n≤5∗105要求时间复杂度O(n)O(n),空间复杂度O(n)O(n).解题思路:我们定义 dp[i] 表示以下标 ...

2022-01-02 15:22:04 381

原创 NC6 二叉树中的最大路径和

描述二叉树里面的路径被定义为:从该树的任意节点出发,经过父=>子或者子=>父的连接,达到任意节点的序列。注意:1.同一个节点在一条二叉树路径里中最多出现一次2.一条路径至少包含一个节点,且不一定经过根节点给定一个二叉树的根节点root,请你计算它的最大路径和例如:给出以下的二叉树,最优路径是:2=>1=>3,或者3=>1=>2,最大路径和=2+1+3=6数据范围:节点数满足0 \le n \le 100000≤n≤10000.

2021-12-29 11:45:38 277

原创 手写一个rpc框架 Day2

上一节中,我们使用JDK序列化和Socket实现了一个最基本的RPC框架,服务端测试时是这样的public class TestServer { public static void main(String[] args) { HelloService helloService = new HelloServiceImpl(); RpcServer rpcServer = new RpcServer(); rpcServer.register(h

2021-12-23 12:02:24 1113

原创 手写一个rpc框架 Day1(保姆级教程)

思路来源于@何人听我楚狂声 大大,但是对我这种彩笔来说,有很多地方还是一知半解,只能边做边百度,所以特地开了个文章准备写个通俗易懂的教程。rpc框架的原理:客户端和服务端都可以访问到通用的接口,但是只有服务端有这个接口的实现类,客户端调用这个接口的方式,是通过网络传输,告诉服务器我要调用这个接口,服务端收到后找到这个接口的实现类,并且执行,将执行的结果返回客户端,作为客户端调用接口方法的返回值。第一章,假设我们已经知道了服务端的地址,做一个最简单的实现。通用接口:之后服务端会调用此接口的实现

2021-12-22 15:05:34 495

原创 NC54 数组中相加和为0的三元组

描述给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。数据范围:0 \le n \le 10000≤n≤1000,数组中各个元素值满足|val | \le 100∣val∣≤100空间复杂度:O(n^2)O(n2),时间复杂度O(n^2)O(n2)注意:三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c) 解集中不能包含重复的三元组。例如,给定的数组 S = {-10 0 10 20 -10 -40},解集为(-..

2021-12-21 21:18:16 41

原创 NC22 合并两个有序数组

描述给出一个有序的整数数组 A 和有序的整数数组 B ,请将数组B合并到数组 A 中,变成一个有序的升序数组数据范围:0 \le n,m \le 1000≤n,m≤100,|A_i| <=100∣Ai​∣<=100,|B_i| <= 100∣Bi​∣<=100注意:1.保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n2.不要返回合并的数组,将数组B的数据合并到 A 里面就好了3...

2021-12-20 13:08:34 466

原创 html知识点

HTML语言特点1、可以设置文本的格式,比如标题、字号、文本的颜色2、超链接,可以使用鼠标点击超链接来实现页面间的跳转3、可以插入图像和媒体4、可以创建表格HTML的标签和属性你查看html代码,会发现html代码中都是<h1>标题</h1>或者<a href=”http://www.baidu.com”>超链接</a>,其中<h1></h1>和<a></a>就是html中的标签,而html是由无数

2021-12-19 12:32:17 229

原创 java链表知识点19

判断是否是回文链表:public static class Node{ public int value; public Node next; public Node(int data){ this.value = data; }}//需要n的额外空间:public static boolean isPalindrome1(Node head){ Stack<Node> stack = new Stack<>(); ...

2021-12-06 22:40:31 357

原创 java数据结构与算法知识点18

贪心算法:保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。问题1:甲乙两选手比赛,手中各有一些牌,每个牌面对应一个点数,双方出牌后点数大的赢一手,先给出两位选手手中牌的点数,求出甲最多能赢乙多少手贪心策略:给乙剩余最小的牌面分配能赢的最小的牌num = int(input())a = list(map(int,input().split()))b = list(map(int,input().split()))a = sorted(a)b = sorted(b)a1 = 0b

2021-12-05 22:41:30 468

原创 java进程线程,流,网络编程知识点17

程序:是为完成特定任务,用某种语言编写的一组指令的集合,即指一段静态的代码,静态对象进程:是程序的一次执行过程,或是正在运行的一个程序,是一个动态的过程,有它自身的产生,存在和消亡的过程——生命周期。进程作为资源分配的单位,系统在运行时会为每个进程分配不同的内存区域线程:进程可进一步细化为线程,是一个程序内部的一条执行路径,若一个进程同时并行执行多个线程,就是支持多线程的,线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器(pc)一个java应用程序java.exe,至少有三个线程:mai

2021-12-04 22:27:08 325

原创 java知识点16

new Integer.valueof()返回的是Integer的对象。Integer.parseInt() 返回的是一个int的值。new Integer.valueof().intValue();返回的也是一个int的值。Integer.valueof(String s)是将一个包装类是将一个实际值为数字的变量先转成string型再将它转成Integer型的包装类对象(相当于转成了int的对象)这样转完的对象就具有方法和属性了。而Integer.parseInt(String s)只是将是数字的

2021-12-02 22:42:22 193

原创 java知识点15

子类转父类无需强转。父类转子类,需要强转,并且转换能否成功取决于被转换的对象是否真的是目标类型的一员:class TBase{ int c=5;}public class zhuan extends TBase{ int a=10; public static void main(String[] args) { zhuan z=(zhuan)new TBase(); System.out.println(z.a); Syste...

2021-12-01 22:13:54 237

原创 关于short,byte类型a+=b 和 a=a+b 的区别

short a = 1;a += 2;a = 3;//不报错short a = 1;a = a + 2;//报错,short类型与int类型进行运算,结果自动转为int类型,数据类型不一致报错short/byte a = 1;short/byte b = 2;a = a+b;//报错,若为short或byte,即使两个操作数数据类型一样也会报错,编译器进行运算时默认int处理...

2021-11-29 20:01:26 209

原创 java基础知识点14

转字符串类型三种方法:将object转成String类型的值。需要注意的是类型必须能转成String类型,(例如Integer类型就不行)否则抛出ClassCastException备注:null值可以强制转换为任何java类类型,(String)null是合法的.toString()java.lang.Object类里已有public方法.toString(),而通常派生类会覆盖Object里的toString()方法,所以对任何java对象都可以调用此方法。必须保证object不是null

2021-11-25 22:36:51 385

原创 java基础知识点13

trim()的作用是去掉字符串两端的多余的空格,注意,是两端的空格,且无论两端的空格有多少个都会去掉,当中间的那些空格不会被去掉,如:String s = " a s f g ";String s1 = s.trim();那么s1就是"a s f g",可见,这和上面所说的是一样的。trim()不仅可以去掉空格,还能去掉其他一些多余的符号,这些符号分别是:\t \n \v \f \r \x0085 \x00a0 ? \u2028 \u2029翻译过来分别是:水平制...

2021-11-24 22:36:47 78

原创 杭电oj1009java

贪心算法import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()){ double m=sc.nextInt(); int n=sc.nextInt(); if (m=...

2021-11-17 14:11:36 215

原创 杭电oj2136java解法

在解决问题之前,先介绍一下什么是素数筛选法。筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。因为希腊人是把数写在涂腊的板上,每要划去一个数,就在上面记以小点,寻求质数的工作完毕后,这.

2021-11-16 22:25:35 87

原创 java知识点12

Collection接口子接口之一:List接口面试题:ArrayList,LinkedList,Vector三者异同同:三个类都是实现了List接口,存储数据特点相同:存储有序的,可重复的数据不同:ArrayList:作为List接口的主要实现类,线程不安全的,效率高,底层使用Object[] elementData存储 LinkedList:对于频繁的插入,删除操作,使用此类效率比ArrayList高,底层使用双向链表存储 Vector:作为List接口的古...

2021-11-16 22:23:48 523

原创 java知识点11

JDK8之前日期和时间API测试:1.Java.lang.System类,提供public static long currentTimeMillis()来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差:long time = System.currentTimeMillis(),称为时间戳2.java.util.Date类2.1.两个构造器的使用2.2.两个方法的使用 构造器1:Date():创建一个对应当前时间的Date对象 toStrting():显示当前的年...

2021-11-15 22:42:47 68

原创 pat乙级 有几个pat(类似于跳楼梯问题)

PAT真题在线练习_过20题领考试代金券_牛客题霸_牛客网import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); char[] arr =str.toCharArray(); int p = 0;

2021-11-12 11:51:29 186

原创 java知识点10

类的内部成员之五:内部类1.java中允许将一个类A声明在另一个类B中,则类A就是内部类,类B称为外部类2.内部类的分类:成员内部类(静态,非静态)vs 局部内部类(方法内,代码块内,构造器内)3.成员内部类:一方面,作为外部类的成员:可以被static修饰;调用外部类的结构,可以被4种不同的权限修饰另一方面,也可以作为一个类:可以定义属性方法构造器等,可以被final,abstract修饰String:字符串,使用一对“”引起来表示1.String声明为final,不可被继承2.Stri

2021-11-12 11:50:01 205

原创 java知识点09

final:最终的1.final可以用来修饰的结构:类,方法,变量2.final用来修饰一个类:此类不能被其他类所继承比如:String类,System类,StringBuffer类3.final修饰方法:此方法不能被重写比如:Object类中getClass();4.final用来修饰变量,此时的变量就称为是一个常量4.1final修饰属性,可以考虑的赋值有:显式初始化,代码块中初始化,构造器中初始化4.2final修饰局部变量:尤其是使用final修饰形参时,表明此形参是一个常量,当我们

2021-11-08 22:31:53 72

原创 java知识点08

Object类中toString()的使用:1.当我们输出一个对象的引用时,实际上就是调用当前对象的toString()2.像String,Date,File,包装类都重写了Object类中的toString()方法,使得在调用对象的toString()时,返回“实体内容”信息3.自定义类也可以重写toString()方法,当调用此方法时,返回对象的“实体内容”包装类的使用:1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征2.掌握的:基本数据类型,包装类,St

2021-11-06 22:10:55 70

原创 pta乙级 插入与归并

PAT真题在线练习_过20题领考试代金券_牛客题霸_牛客网import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int[] arr1 = new int[num]; int[] arr2 = new int

2021-11-06 22:09:27 69

原创 pta乙级 完美数列

PAT真题在线练习_过20题领考试代金券_牛客题霸_牛客网import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int p = sc.nextInt(); int[] arr = new int[num]

2021-11-06 15:18:57 46

原创 java知识点07

面向对象特征之三:多态性1.理解多态性:可以理解为一个事物的多种形态2.何为多态性:对象的多态性:父类的引用指向子类的对象(或子类的对象赋给父类的引用)3.多态的使用:虚拟方法调用(在多态情况下,此时父类的方法被称为虚拟方法)有了对象的多态性以后,我们在编译期,只能调用父类中声明的方法,但在运行期,我们实际执行的是子类重写父类的方法。总结:编译看左边,运行看右边4.多态性的使用前提:类的继承关系,方法的重写5.对象的多态性:只适用于方法,不适用于属性(编译和运行都看左边)在多态情况下,n

2021-11-05 22:42:17 66

原创 PAT乙级:德才论

PAT真题在线练习_过20题领考试代金券_牛客题霸_牛客网import java.util.*;public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int min = sc.nextInt(); int max = sc.nextInt();...

2021-11-04 22:06:36 53

原创 java知识点06

面向对象的特征之二:继承性继承性的好处:1.减少了代码的冗余,提高了代码的复用性2.便于功能的扩展3.为之后多态性的使用,提供了前提继承性的格式:class A extends B{}A:子类,派生类,subclassB:父类,超类,基类,superclass1.体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的结构:属性,方法特别的:父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构只有因为封装性的影响,使得子类不能直接调用父类的结构

2021-11-04 15:40:59 89

原创 Java知识点05

面向对象特征一:封装与隐藏一.问题的引入当我们创建一个类的对象之后,我们可以通过“对象.属性”的方式,对对象的属性进行赋值。这里,赋值操作要受到属性的数据类型和存储范围的制约,但是除此之外,没有其他制约条件。但是,在实际问题中,我们往往需要给属性赋值加入额外限制条件,这个条件就不能在属性声明时体现,我们只能通过方法进行限制条件的添加。同时,我们需要避免用户再使用“对象.属性”的方式对属性进行赋值,则需要将属性声明为私有的(private)。此时,针对于属性就体现了封装性。二.封装性的体现:1.我们将

2021-11-03 22:43:24 62

原创 java知识点04

java类及类的成员:属性,方法,构造器,代码块,内部类面向对象三大特征:封装性,继承性,多态性,(抽象性)其他关键字:this,super,static,final,abstract,interface,package,import等面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象:强调具备了功能的对象,以类、对象为最小单位,考虑谁来做面向对象的思想:1.根据问题需要,选择问题所针对的现实世界的实体,2.从实体中寻找解决问题相关的属性和功能,这些属性和功能就形成了概念世界

2021-10-31 21:04:05 66

原创 java知识点03

eclipse中快捷键:1.alt+/,可自动补全代码,输入syso自动补全System.out.println,输入main自动补全psvm2.快速修复:ctrl+13.使用单行注释:ctrl+/4.使用多行注释:ctrl+shift+/5.取消多行注释:ctrl+shift+\6.选中数行,整体往后移动:tab7.选中数行,整体往前移动:shift+tab8.在当前类中,显示类结构,并支持搜索指定的方法属性等:ctrl+o9.批量修改指定的变量名,方法名,类名等:alt+shift+r

2021-10-29 22:17:46 118

原创 java知识点02

从键盘获取不同类型的变量:需要使用Scanner类具体实现步骤:1.导包:import java.util.Scanner;2.Scanner的实例化:Scanner sc = new Scanner(System.in)3.调用Scannerd类的相关方法,来获取指定类型的变量int型获取:int num = sc.nextInt();string型获取:String num = sc.next();对于char型的获取,Scanner没有提供相应的方法,只能获取一个字符串char a =

2021-10-27 22:33:38 117

原创 java知识点01

JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节

2021-10-26 22:37:08 55

原创 Python知识点03

Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。str.replace(old, new[, max])类是主要用于创建对象的构造体。在创建和使用对象之前,必须描述它将具有哪些成员变量和成员函数,这是通过定义一个类来完成的。类(Class)是一种程序员定义的数据类型,用于描述从类创建的对象在构造时将是什么样子的。python中object类是所有类都会继承的类Python没有专门的指针,所有变

2021-10-25 20:18:28 61

原创 python知识点02

随机产生密码本并加密:import randomalphabet = 'a,b,c,d,e'base = alphabet.split(',')target = base.copy()random.shuffle(target)print(target)cipher = dict()for i in range(len(base)): cipher[base[i]] = target[i]a = input('输入')new = ''for i in a: new = ...

2021-10-24 18:00:49 612

原创 python知识点01

double*pd=NULL;pd=(double*)malloc(10*sizeof(double));表示将向系统申请10个连续的double类型的存储空间,并用指针pd指向这个连续的空间的首地址。并且用(double)对malloc()的返回类型进行转换,以便把double类型数据的地址赋值python中使用int(),float(),str()进行类型转换使用input()输入信息,输入的数据类型为字符串,可以使用类型转换,weight = float (input("shuru"))

2021-10-23 13:14:50 88

空空如也

空空如也

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

TA关注的人

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