- 博客(20)
- 收藏
- 关注
原创 数据结构实验:链表--多项式相加
Description通过有序对输入多项式的各个项,利用单链表存储该一元多项式,并建立的2个存储一元多项式的单链表,然后完成2个一元多项式的相加,并输出相加后的多项式。要求: 一个主函数和三个子函数,包括:(1) 多项式输入函数——链表建立函数(2) 多项式相加函数——链表的合并(3) 多项式输出函数——链表的输出Input输入数据有多组,对于每组测试数据,第一行一个整数n,表示第一个多项式La的项数;接下来n行,每行表示多项式的一项,包含两个元素,表示系数和指数;接下来一个整数m,表示第二个
2021-03-23 19:09:39 1622
原创 快速排序
什么是快速排序?快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略基本思想1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。重要思想:1. 分治、2.递归(分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。)算法演示一般选定数组的第一个数n,
2021-03-11 18:31:56 126
原创 奇怪的指针又增加了
懒得再写一遍了,凑活着看吧指针是什么:指针也就是内存地址,指针变量是用来存放内存地址的变量符号 * 和 & 在c语言中的用法指针在数组如: int a[5]; 那么,a就是一度个指针,它指向数组的第一个元素。反过来,每一个指针都可以当做一个数组来用。如: char p=“0123”; 那么,编译器会分知配5字节存储字符串“0123”,而p则指向第一个字符’0’。所以,p==‘0’,(p+3)==‘3’。其实,你完全可以不用运算符,由“等道价”可知:p[0]‘0’,p[3]‘3’---
2021-03-11 00:29:07 185 2
原创 LeetCode06二进制中1的个数(位运算)
请实现一个函数,输入一个整数(以二进制串形式),输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 1:输入:00000000000000000000000000001011输出:3输入:00000000000000000000000010000000输出:1输入:11111111111111111111111111111101输出:31解释:输入的二进制串 111111111111111111111111.
2021-03-08 23:16:06 121
原创 LeetCode05斐波那契(Fibonacci)数列(动态规划)
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。总结:一道简单的动态规划,c语言课上应该就做过了经典例题(我第一天第二天做的..
2021-03-07 20:23:22 208
原创 LeetCode04---旋转数组的最小数字(水一道)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0总结:二分法...
2021-03-07 00:44:30 94
原创 IDEA个性化设置和技巧---叮!
最近因为JavaWeb学习不得不安装了idea专业版(学生邮箱白嫖哦hh),就重新设置了一波idea,个人觉得这些设置很有用,如果你也觉得有用或者有要安利的设置欢迎大家点赞评论!个性化设置:主题代码字体显示方法之间的分割线预览注释取消自动更新检测就不会有提示啦maven配置(JavaWeb才需要哦,小伙伴可自行跳过)小技巧:按住ctrl键,左键点击类名直接看源码(妈妈再也不会担心我不看源码了)按住Ctrl之后,鼠标移至有源码的类名、方法、
2021-03-05 19:11:56 201
原创 LeetCode03动态规划---青蛙跳(斐波那契数列)
青蛙跳台阶package LeetcCode.青蛙跳台阶;/* 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输入:n = 7 输入:n = 0 输出:2 输出:21 输出:1 提示: 0
2021-03-05 12:16:34 290 1
原创 LeetCode02顺时针打印数组
顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]限制:0 <= matrix.length <= 1000 <= matrix[i].lengt
2021-03-03 20:35:55 230 1
原创 注解和反射
文章目录注解和反射注解内置注解元注解自定义带参注解反射静态VS动态语言Java反射机制研究及应用Class类Class类常用方法获取Class类的实例哪些类型可以有Class对象Java内存分析类的加载过程类加载器的作用创建运行时类的对象有了Class对象,能做什么创建对象调用指定方法反射性能分析反射操作泛型反射操作注解注解和反射注解和反射是框架的底层,mybatis,spring注解Java.Annotation◆Annotation是从JDK5.0开始引入的新技术.◆Annotation的作
2021-03-02 16:12:56 111
原创 LeetCode01连续子数组最大和(动态规划)
连续子数组最大和输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。提示:1 <= arr.length <= 10^5-100 <= arr[i] <= 100动态规划解析: 大致思路:定义一个和目标数组num一样大小的动态规划数组dp,遍历后d
2021-02-26 15:54:26 1228
原创 UDP网络编程+IO+多线程 ---->聊天室
网络编程 UDP网络编程+IO+多线程 ---->聊天室UDP是一个非连接的协议,传输数据之前源端和终端不建立连接, 当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常, 其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包, 如果数据包是否到达的消息及时反馈回来,那么网络就是通的。思路:UDP实现单向数据发送,即一个发送方一个接收方。聊天需要双向发送消息,我们可以写两
2021-01-27 00:21:21 198
原创 java多线程基础
文章目录java多线程实现线程的方式(线程创建)继承于Thread类实现Runnable接口实现Callable接口线程的底部实现原理——静态代理线程的状态和操作线程的状态守护(deamon)线程线程的方法线程停止**线程休眠**线程同步并发队列和锁线程不安全的案例同步方法synchronized方法synchronized块死锁Lock锁线程协作生产者消费者问题应用场景线程通信解决方式线程池文章较长,建议目录查阅java多线程 多线程是实现并发机制的一种有效手段。进程和线程一样,都是实现并发的一
2021-01-25 21:57:11 125
原创 Lambda表达式
Lambda表达式在之前的多线程学习中我们使用到了lambda表达式来简化代码,现在我们来具体讲一讲它的用法。(我们以往都是通过创建 Thread 对象,然后通过匿名内部类重写 run() 方法,一提到匿名内部类我们就应该想到可以使用 lambda 表达式来简化线程的创建过程。)Lambda简介Lambda 表达式是 JDK8 的一个新特性,可以取代大部分的匿名内部类,写出更优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。JDK 也提供了大量的内置函数式接口供我们使
2021-01-22 00:21:09 183 2
原创 UML基本用法
类图类图基础属性从上到下:类图名、属性、方法+表示public-表示private #表示protected _下划线表示static 斜体表示抽象 ~表示default,也就是包权限类之间的关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。各种关系的强弱顺序:泛化= 实现>
2021-01-06 16:53:27 1779
原创 Java 内接口排序和外接口排序
Java之Comparable接口(内部排序接口)与Comparator接口(外部排序接口)Comparable接口Comparable:“可比较的”,(欲参与比较的对象对应的元素类需实现Comparable接口)使用这种策略来比较时,两个对象(这里两个对象是指一个类的两个不同实例)本身必须是“可比较的”,比较的标准由对象所在的类来定义,这种可比较的能力是对象本身固有的,因此不需要第三方参与就可以完成比较。要使得两个对象本身是可比较的,那么对象所在的类必须实现Comparable接口才可以。其comp
2021-01-04 22:41:32 451
原创 抽象类和接口
抽象类和接口抽象类定义:抽象类前使用abstract关键字修饰,则该类为抽象类。使用抽象类要注意以下几点:1. 抽象类是约束子类必须有什么方法,而并不关注子类如何实现这些方法。2. 抽象类应用场景:a. 在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确知道这些子类如何实现这些方法(可实现动态多态)。b. 从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免子类设计的随意性。 3.抽象类定义抽象方法,只有声明,不需要实现。抽象方法没有方法体以
2021-01-03 21:01:10 144
原创 JAVA面向对象三大特性
JAVA面向对象三大特性Java属于面向对象语言(Object-Oriented Programming,OOP),面向对象编程三大特性:封装、继承、多态一、 封装**1.概念:**为了“隐藏细节”和“数据安全”利用抽象数据类型把数据和基于数据的操作封装起来,使其成为一个不可分割的整体,数据隐藏在抽象数据内部,尽可能的隐藏数据细节,只保留一些接口使其与外界发生联系。也就是说用户无需知道内部的数据和方法的具体实现细节,只需根据留在外部的接口进行操作就行。2.封装的实现2.1 需要修改属性的访问控
2021-01-02 16:06:08 176
原创 Day01-MarkDown格式
MarkDown二级标题标题:#+空格+标题名字(#的个数表示几级标题)字体Hello,World!Hello,World!Hello,World!Hello,World!Hello,World!快捷键ctrl+各种字母引用用 > 在段落开头可使用引用分割线用三个“-”或者“*”使用分割线图片本地图片![截图](C:\Users\ThinkPad\Documents\Tencent Files\2063037024\Image\Group%%W0JHQ3VWCC
2020-11-08 23:28:15 109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人