自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Linux系统中rpm与yum的区别

rpm是RedHat packagemanage的简写。

2022-12-22 21:13:04 1210 1

原创 动态规划(入门)

最经典的递归算法,但是我们知道,递归的逐层嵌套是存在很大弊端的,我们能否对其进行一定的改进呢?既然我们只需要第n层的方法,而求第n层只需要求前两层的方法,那我们把之前全部的方法数存起来干什么?既然每一层的方法都受前面层数的影响,那么我们不妨将每层所需的方法数存在一个数组里,这样以来要求哪一层就直接从数组里调就好了。如此推得,爬n层楼梯的方法数不就是爬n-1层楼梯的方法数+爬n-2层楼梯的方法数吗?以上是两道最为基础的动态规划问题,如果你已经学会了,那就快去找几道经典的动态规划问题去试试手吧!

2022-10-13 18:29:11 608

原创 初级算法——二叉树最大深度(BFS和DFS解法)

求二叉树的深度如果使用深度优先遍历就是计算每条路径的深度,然后比较哪一条最长,返回哪一条。如果换做使用递归,就是从下往上比较,看对于每一个结点来说左右哪条路最短,选择哪一条返回。由于递归方法比较简单,在此我们就不做赘述了,直接上代码!如果使用广度优先遍历,那么使用队列就是最好的选择(因为队列满足先进先出,父子结点按顺序来)。,共出该层进队列数量个结点,每个出队列都要判断该结点是否有子节点,如果有就让。如果你对Queue的库方法不太熟悉,可以参考这篇文章。,设置一个变量统计进队列的结点数量。

2022-10-11 16:49:54 251

原创 Java中栈和队列的常用方法

栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2022-10-11 16:48:52 1016

原创 初级算法——验证回文串

我们先定义两个指针,一个指头,一个指尾。但由于其全部都是通过API来实现,调用层数太多且底层也没有任何的简化,只是写起来方便一些,所以时间和空间开销比较大,不建议使用,我们主要通过这则代码来了解相关API的使用就好。通过调用StringBuffer的reverse()方法将字符串转换,再用String的equals()方法进行比较。谁曾想竟然有直接判断是否是字母或数字的API,而且还“人如其名”,就叫isLetterOrDigit(),下面我们来拓展一下。

2022-10-04 18:07:59 335

原创 正则表达式的基础语法

正则表达式就是使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。说白了就是模糊匹配。

2022-10-04 18:03:48 702

原创 初级算法——有效的字母异位词

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。将字符串转换为字符数组然后用equals方法进行比较。时间复杂度:O(nlogn),空间复杂度:O(n)时间复杂度:O(n^2),空间复杂度:O(n)

2022-10-03 22:21:04 129

原创 初级算法——字符串中的第一个唯一字符

这里我们学习一下Map中getOrDefault()这个方法的使用,这个方法只需要使用一次就可以减少一次if-else的使用。不用再判断是否存在key值,如果存在得到key对应的value然后加一,如果不存在就把对应的key和0put进去。而是直接使用该方法,如果存在就置value为后面的值,如果不存在就值默认值。同时我们还要注意一下第二次循环找数,如果直接使用map的for-each遍历,会导致找不到对应的下标(我第一次就是因为使用了for-each循环而走投无路,最后又改成存索引wuuuuuuuu。

2022-10-03 21:59:54 243

原创 初级算法——回文链表

和回文数组、回文字符串不同,回文链表无法向前遍历,只能往后。所以我们可以将其放入一个可以遍历的容器中,这个容器既可以是栈、ArrayList或者是数组。对于回文,我们可以将后半部分进行反转,然后两个指针一个从头开始,一个从中间开始进行遍历比较就可以判断链表是否回文。,请你判断该链表是否为回文链表。给你一个单链表的头节点。

2022-10-01 11:30:20 258

原创 初级算法——删除链表的倒数第N个节点

快慢指针求解

2022-10-01 09:33:57 153

原创 初级算法——合并两个有序链表

新建一个头节点,每次比对哪个小连接哪一个就好,如果一个为空就连另一个。新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。

2022-09-29 16:49:16 371

原创 初级算法——反转链表

解法一:三指针迭代法解法二:栈存储法解法三:头插法解法四:递归

2022-09-29 11:56:40 317

原创 计算机主机内部硬件缩写所对应的器件

主存储器、RAM、MAR、MDR运算器、ACC、MQ、ALU、X存储器、CU、IR、PC

2022-09-23 21:55:18 882

原创 用Java实现链表功能

用Java实现链表功能。

2022-09-23 13:34:41 182

原创 初级算法——整数反转

本题的难点在于对于超出整数存储范围的数的处理,然后判断是一个问题。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。假设环境不允许存储 64 位整数(有符号或无符号)。(方法摘自:力扣(LeetCode)

2022-09-22 10:52:32 260

原创 初级算法——旋转图像

其实所谓的旋转图像,说到底不就是数组中元素有规律的交换吗?其实我们可以将其想成一圈套一圈的数组,每圈中的数都是向前移动边长位来进行交换的。那么对于每一圈数组,我们就能设立四个指针变量,分别指向上下左右的起始元素,然后通过指针之间的元素交换与指针的前移来实现一圈圈的旋转。

2022-09-21 13:46:09 407

原创 初级算法——两数之和

比如说排序加双指针算法,库函数自带排序加头尾两指针相加逐个对比往内移动,最后找出那两个数。不错,这种方法确实简化了不少,但是却有一个很大的漏洞,就是题中所要求的是返回数字原下标,排序之后数组下标也就随之变化了,没法返回原来的下标,再去遍历查找一次反而又让算法变得不够简洁。这种对值有要求但是返回的是下标的题,我们可以联想到Map集合,但是在Map中我们只能通过key来找到value,那么不妨把数组中的值当作key,把下标当作value,而恰好要寻找的两个value值之间又有相加和为target的关系。

2022-09-20 14:33:51 113

原创 初阶算法——有效的数独

想看懂这道题用位运算的方法怎么做,首先要对位运算和整型存储有足够的了解。一个int整型数组,有32个二进制位,我们可以用每一位是0或1来表示一个数存在与否。左移运算可以将对应位置1,与运算可以判断该元素是否存在,或运算可以对对应位置进行赋值。解法一的思想是用二维数组来存储该数是否存在的标志,从而建立了三个二维数组。一个有效的数独(部分已被填充)不一定是可解的。

2022-09-20 14:02:13 216

原创 初级算法——罗马数字转整数

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。然后对于特殊情况,直接判断后一个数如果比它大,那就减该数;例如, 罗马数字 2 写做 II ,即为两个并列的 1。IL 和 IM 这样的例子并不符合题目要求,49 应该写作 XLIX,999 应该写作 CMXCIX。s 仅含字符 ('I', 'V', 'X', 'L', 'C', 'D', 'M')罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

2022-09-17 23:23:18 98

原创 初级算法——移动零

非零前移,最后补零。使用双指针,一个表示非零所在位置,一个遍历数组。采用双指针算法,一个移动找0,找到0就和前面不为0指针所指的数交换。移动到数组的末尾,同时保持非零元素的相对顺序。,必须在不复制数组的情况下原地对数组进行操作。注意:题目中要求的排序算法为稳定排序。,编写一个函数将所有。

2022-09-17 20:50:19 131

原创 初级算法——两个数组的交集

我们可以先将数组排好序,然后用双指针来找相同的数,谁小谁就往右移,直到一个数组移到尽头。该算法的时间复杂度是sort的时间复杂度O(nlogn),所占空间也仅仅是创建了常数个数组,所以空间复杂度为O(n)。

2022-09-13 16:52:35 405

原创 初级算法——只出现一次的数字

题目给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。解法一:位运算

2022-09-11 16:09:38 113

原创 初级算法——存在重复元素

给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。

2022-09-11 11:28:42 340

原创 算法题解——旋转数组

为了将空间复杂度降到最低,我最先想到的算法就是每次将最后一个元素提出,其余元素统统后移一位,然后把该元素放在第一个位置,总共移动k次。下面是我自己的代码,通过开辟新数组来存放从后往前移的元素,剩下的移动到后边,然后再把新数组里的元素移动到前边。其实看了原数组和旋转后的数组,我们不难发现,所谓的旋转数组就是先反转全部数组,在反转前k个,最后在反转剩余的。这种方法的时间复杂度和空间复杂度算是几种方法里最小的了,时间复杂度为O(n),空间复杂度为O(1)。其实,我们看到,题目中所谓的旋转数组,

2022-09-08 18:34:38 376

原创 补码表示的浮点数范围(详细解法)

参考问题如下: 若浮点数字长共M+N位,其中尾数占M位(含符号位),阶码占N位(含符号位),尾数和阶码均采用补码表示,请写出该浮点数对应的表数范围浮点数将整个字长分为两部分,其中一部分表示尾数,另一部分表示阶码。 则浮点数所表示的数值大小为:尾数×2阶码例如求该图所表示的浮点数 对于阶码:101110为补码,符号位不变取反加一为110010 = -18对于尾数:00100011原反补相同 = 所以表示的浮点数为:()* 对于n位二进制整数,取值范围为:而对于n位小数,其实

2022-09-07 12:31:17 8079

原创 初阶算法——删除有序数组中的重复项

由于在某些语言中不能改变数组的长度,所以必须将结果放在数组nums的第一部分。更规范地说,如果在删除重复项之后有 k 个元素,那么 nums 的前 k 个元素应该保存最终结果。看到这种删除数组中元素的问题我们首先想到的是遍历数组,将要删除位置后面的元素前移覆盖。给你一个升序排列的数组 nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。不要使用额外的空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。)就不太好了,而该算法的时间复杂度就是O(

2022-09-06 22:01:07 356

原创 JVM基本结构

JVM主要分为四部分:1. 类加载器(Class Loader)2. 运行时数据区(Runtime Data Area)3. 执行引擎(Execution Engine)4. 本地库接口(Native Interface)其中,运行时数据区(内存布局)又分为。

2022-08-07 22:40:31 374

原创 JDK目录介绍

该目录是一个小型数据库,在Java中引入了一个开源的数据库管理系统——JavaDB。该目录为Java运行时的环境根目录,它包含Java虚拟机、运行时的类包、Java应用启动器和一个bin目录,但不包含开发环境中的开发工具。——启动java虚拟机进程(JVM),相当于一个操作系统,专门负责运行.class字节码文件。——将编写好的java文件(.java文件)编译成java字节码文件(.class文件)存放JDK核心类源代码和JavaFX源代码,通过这两个文件可以查看Java基础类的源代码。...

2022-08-05 22:35:33 6104

原创 Java中的String类型与其他类型的转换

整型转字符串

2022-07-09 16:50:17 742

原创 SQL中HAVING和WHERE的区别

在SQL中,一般的增删查改语句都是使用WHERE关键词来对特殊的字段进行检索,但是当SELECT查询语句中使用到GROUP BY来进行分组查询时,对于分组后的结果进行条件过滤则需要用到HAVING关键词。简单来说,就是WHERE用于分组前,HAVING用于分组后!

2022-04-20 20:35:51 214

原创 数据库约束

NOT NULL - 指示某列不能存储 NULL 值。UNIQUE - 保证某列的每行必须有唯一的值。DEFAULT - 规定没有给列赋值时的默认值。(后面空格直接跟该默认值)PRIMARY KEY(主码)- NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。对于整数类型的主键,常配搭自增长auto_increment(MySQL特有函数,子代i++)来使用,在插入数据时即可不给该主码对应字段不给值,默认使用前一个+1

2022-04-18 16:20:09 311

原创 MySQL数据的增删查改(CRUD)

一、增(Create)插入数据:1、全列插入2、指定列插入3、插入多行数据二、查询(retrieve)1、全列查询(一般不建议使用)2、指定列+表达式查询3、别名4、DISTINCT去重5、ORDER BY排序6、WHERE条件查询7、分页查询(MySQL特有)三、修改(Update)四、删除(Delete)

2022-04-18 13:06:38 355

原创 MySQL表操作和语句注释

​在sql中使用--空格来表示注释(不会被保存进数据库)-- 这是一行注释create table insert();-- 由于insert是关键字,此处会报错create table `insert`();-- 如果一定要用这个名字,就在两边加`符号,不会报错反单引号:可以使用关键字来命名

2022-04-15 18:10:35 467

原创 MySQL语句的常用数据类型

数据类型一、数值型数值型包括整型和浮点型整型

2022-04-15 10:51:38 473

原创 MySQL有关库的基本操作命令

数据库的操作:一、查询、显示所有的数据库:二、创建数据库三、删除数据库

2022-04-15 09:50:36 818

原创 MySQL准备阶段基础知识

数据库大体可以分为关系型数据库和非关系型数据库数据库的数据保存在硬盘里数据库使用很多数据结构,把数据组织起来数据库还使用了其它很多技术:多线程,io等MySQL的gui可视化工具:navicat , MySQL Workbench数据库大体可以分为 关系型数据库 和 非关系型数据库关系型数据库(RDBMS):(保证安全来牺牲性能,所以对于海量数据效率较低)是指采用了关系模型来组织数据的数据库。 简单来说,关系模型指的就是二维表格模型,...

2022-04-13 19:54:02 592

原创 Java中的继承和多态之理清代码块

父类静态代码块优先于子类静态代码块执行,且是最早执行父类实例代码块和父类构造方法紧接着执行子类实例代码块和子类构造方法再执行第二次实例化子对象时,父类和子类静态代码块都不会再执行

2022-03-17 11:55:02 62

原创 Java中的继承和多态之super和this的使用区别

Java中的继承和多态系列文章目录第一章super和this的使用区别一、super和this的使用方法通过子类对象访问父类与子类不同的方法名和成员变量名时,优先在子类中寻找,找到则访问,其次才在父类中寻找 通过子类对象访问父类与子类相同的方法名和成员变量名时,就需要用到super和this,其中,super:访问父类成员,this:访问子类成员。如果不加,默认为子类方法或变量public class Animal { String name; publi..

2022-03-17 11:00:24 665

原创 Java中的类和对象之代码块

普通代码块构造块静态块同步代码块

2022-03-14 17:41:25 272

原创 Java中的类和对象之构造方法

构造方法是一个特殊的成员方法,名字必须与类名相同,在创建对象时,又文章目录前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决.

2022-03-12 18:22:56 1836

空空如也

空空如也

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

TA关注的人

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