自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 10.22总结

这是一个典型的广度优先搜索(BFS)问题,你需要从腐烂的橘子开始,依次感染周围的新鲜橘子,直到无法感染为止。先初始化一个队列,将所有腐烂的橘子的位置放入队列,同时统计新鲜橘子的数量。然后,进行BFS遍历,依次感染周围的新鲜橘子,同时更新新鲜橘子的数量和分钟数。然后,通过比较当前位置和目标位置的行数和列数,使用 'U'、'D'、'L'、'R' 指令来移动到目标位置,以及 '!创建一个哈希表(HashMap)来统计数组中每个元素的频率,其中键是数组的元素,值是元素出现的次数。- 第 0 天,你访问房间 0。

2023-10-22 23:17:02 96

原创 10.15总结

8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。所以一个可行的答案是 [words[0],words[1],words[2]] = ["a","b","c"]。得到答案为 [words[0],words[1],words[3]] = ["a","b","d"]。另一个可行的子序列是 [1,2] ,因为 groups[1]!所以一个可行的答案是 [words[0],words[2]] = ["e","b"]。

2023-10-15 22:29:50 80

原创 10/8学习总结

输入:queries = ["bbb","cc"], words = ["a","aa","aaa","aaaa"]输出:[1,2]解释:第一个查询 f("bbb") < f("aaaa"),第二个查询 f("aaa") 和 f("aaaa") 都 > f("cc")。输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]例如,若 s = "dcce",那么 f(s) = 2,因为字典序最小字母是 "c",它出现了 2 次。

2023-10-08 21:34:42 77

原创 周学习总结

在windows操作系统中,java对回车换行进行了优化,虽然完整的是\r\n,但是我们写其中一个\r或者\n,java也可以实现换行,但最好还是全写。如果try中可能遇到多个问题,那么一个问题对应一个catch(),如果要捕获多个异常,如果异常中存在父子关系,那么父类一定要写在下面。解决:将代码自己敲击一遍,然后足部进行代码运算,了解到进行加密方式是对文件存储数据的更改,解密就是对文件数据的还原。throw:写在方法内,结束方法,手动抛出异常对象,交给调用者,方法中下面的代码不再执行了。

2023-10-03 10:59:34 62

原创 java的集合

ArrayList<类型> 集合名=new ArrayList<类型>();在显示时,打印集合名不是地址值,而是集合中的内容,内容用“[ ]”将内容包含。

2023-05-21 22:46:57 48

原创 Java字符串操作

一个容器,创建后里面的内容可以变。StringBulider 变量名=new StringBuilder();//创建一个空白可变字符串对象,不含任何内容StringBuilder 变量名=new StringBuilder(字符串内容);1.StringJoiner 变量名=new StringJoiner(delimter,prefix,suffix);(分隔符,前缀符号,后缀符号)2.变量名.add(内容)3.变量名.toString();i++)

2023-05-18 22:52:24 56

原创 java的面向对象

封装代码实现将类的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问成员变量。一般用private关键字来隐藏信息。private是一个修饰符,可以用来修饰成员(成员变量、成员方法)。this:就近原则,用于区分成员变量和局部变量,用于指代成员变量。作用:在创建对象时给成员变量赋值。

2023-05-16 23:20:29 54

原创 java的类和对象

类的组成是由属性和行为两部分组成属性:在类中通过成员变量来体现(类中方法外的变量)行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字即可)成员变量的定义格式修饰符 数据类型 变量名称 = 初始化值。类的定义步骤①定义类②编写类的成员变量③编写类的成员方法public class 类名 {// 成员变量变量1的数据类型 变量1;变量2的数据类型 变量2;// 成员方法方法1;方法2;//成员变量int price;//成员方法。

2023-05-16 00:04:16 34

原创 JAVA的数组

在进行引用数组元素时,array为数组的首地址,即在内存中的地址。数据类型[ ] 数组名=new 数据类型{元素1,元素2,......};数据类型 [ ] 数组名=new 数据类型[ 数组长度];当输出的数组元素下标超过数组长度,会有下标越界提示。其中 “ [ ”表示当前为一个数组的地址;引用数据类型:默认初始化值为null。布尔类型:默认初始化值为false;小数类型:默认初始化值为0.0;字符类型:默认初始化值为空格;整数类型:默认初始化值为0;数据类型[ ] 数组名。数据类型 数组名[ ]

2023-05-14 22:56:49 33

原创 5.12总结

同时在棋盘上 C 点有一个对方的马,该马所在的点和所有跳跃一步可达的点称为对方马的控制点。棋盘用坐标表示,A 点 (0, 0)、B 点 (n, m),同样马的位置坐标是需要给出的。对于 100% 数据,有 0<n<=100,0<m<=100,0<=a[i]<=100.对于 50% 数据,有 0<n<=20,0<m<=20,0<=a[i]<=20;对于 20% 数据,有 0<n<=8,0<m<=8,0<=a[i]<=8;对于 100 % 的数据,1<=n,m<=20,0<=马的坐标<=20.

2023-05-12 00:20:46 30

原创 深度优先搜索dfs

深度优先搜索也叫深度优先遍历,简称DFS。假设我们需要在某个房间里面寻找钥匙,无论从那一间房都可以,比如主卧。然后从房间的一个角开始,将房间内的墙角、床头柜、床上、床下、衣柜里等所有地方挨个进行寻找,做到不放过任何一个死角,所有的抽屉、存储柜中全部都找遍,形象比喻就是翻个底朝天,然后再寻找下一间,直到找到为止。如果是走迷宫,就是从起点出发,同时进行所有可能路径的寻找,直到某条路径到达终点。与广度优先搜索不同的是,广搜是一条路走到底,深搜就是同时所有可能路径一起搜索,直到有一条路径到达终点,就结束。

2023-05-10 23:12:55 37

原创 动态规划——最长公共子串

最长公共子串问题是指在两个或多个字符串之间找到最长的连续子串。子序列可以不连续,子串必须是连续的。解决该问题的方法有暴力枚举法以及动态规划dp。将两串字符串中的字符一一进行比较,得出最长子串的起点和长度后,进行输出。dp[i][j]代表的x的前i个字符串与y的前j个字符串的最长公共子串,如果两个字符相等,则dp[i][j]=dp[i-1][j-1]+1;如果不相等,就说明不满足最长公共子串,自然dp[i][j]=0.

2023-05-09 23:02:10 295

原创 希尔排序和快速排序

如何让排序算法记录数据个数较少呢?比如我们现在的序列是{9,1,5,8,3,7,4,6,2},现在将他分为三组{9,5,1},{8,3,7},{4,6,2},将其各自排序后,变成了{1,5,9},{3,7,8},{2,4,6},再合并为{1,5,9,3,7,8,2,4,6}。所谓的基本有序就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间,像{2,1,3,6,4,7,5,8,9}这样可以称为基本有序了。但像{1,5,9,3,7,8,2,4,6}这样的9在第三位,2在倒数第三位就谈不上基本有序。

2023-05-08 23:30:05 95

原创 还原二叉树

根据二叉树的先序遍历(根结点,左子树,右子树)我可以知道 A 是根结点,再在中序序列中找到根结点,进行分割,中序遍历(左子树,根结点,右子树),找到根节点后,可以按照这个遍历顺序,找到左子树的部分和右子树的部分。再依据左子树的个数和右子树的结点个数,划分先序序列的左子树和右子树,输出的时候以后序遍历的顺序输出(左子树,右子树,根结点)。他把他的奶牛 们的家谱作成二叉树,并且把二叉树以更线性的“树的中序遍历”和“树的前序遍历”的符号加以记录而 不是用图形的方法。第二行: 同样的树的前序遍历。

2023-05-07 22:27:18 190

原创 图的存储结构

从图的逻辑结构定义来看,图上任何一个顶点都可以被看成是第一个顶点,任一顶点的邻接点之间也不存在次序关系。图是由顶点和边两部分组成,可以分为两个结构来分别存储。顶点不分大小、主次,所以用一个一维数组来存储是很不错的选择;而边由于是顶点与顶点之间的关系,搜易用一个二维数组来存储。邻接矩阵存储就是用两个数组来表示图,一个一维数组存储图中顶点信息,一个二维数组存储图中边的信息。设图G中有n个顶点,邻接矩阵是一个n*n的方阵,定义为例如下面的无向图。

2023-05-04 22:43:30 34

原创 二叉查找树(BST)

二叉查找树又名二叉搜索树,其中左结点的值小于父节点的值,右结点的值大于父节点的值。若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值;任意节点的左、右子树也分别为二叉查找树;没有键值相等的节点。将有序数列nums [ 2 0 4 6 8 9]变为一棵二叉搜索树(1)取一个元素作为二叉树的根结点,我一般习惯于中间结点 mid=(L+R)/2;

2023-04-27 22:54:31 51

原创 二叉树的遍历方式

把树的每层看成一个二维数组的每一层,将根结点当做数组的下标,将左子树存放于[ 1 ],右子树存放于[2];然后便利的时候按照根结点-->左结点-->右结点的顺序,一次遍历取数。后面 n 行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。第一行为二叉树的节点数 n。(1 <= n <= 26)输入一串二叉树,输出其前序遍历。链表中每个结点由3个域组成。data(某结点数据信息)lchild(左子树)rchild(右子树)

2023-04-26 23:30:36 35

原创 Java的基本概述

4.标识符。

2023-04-25 22:59:29 40

原创 哈希表(Hash)

哈希表是一种基于哈希函数建立的一种查找表,也叫作散列表,是根据关键字和值直接进行访问的数据结构,其关键思想是使用哈希函数,将键key和值value映射到对应表的某个区块中。在哈希表的实际应用中,关键字的类型除了数字类型,还有可能是字符串型、浮点数、大整数型,甚至还有可能是集中类型的组合。

2023-04-24 22:50:01 762

原创 自动点餐系统(四)

这个项目我用的是比较简单的结构体数组,辅助是文件,当然对于增删这种操作一般用链表是最简单便捷的,但是查找和修改用数组更简单。存储账单的文件进行清除是还没有实现的,这个容易导致输出当天金额的时候会加上前一天的金额,这个账单文件目前只能手动删除。一、管理员进行菜单更改,点餐者对某种食物的热爱度更新后要进行热度的排序(我这里使用的是c语言的快排函数)四、对于点餐者信息的保存以及读取。二、管理者更改菜单后进行保存。三、对于菜单的读取并输出。

2023-04-23 22:32:06 134

原创 莱文斯坦距离(Levenshtein)

莱文斯坦距离是编辑距离的一种,指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。我们要用最少的字符操作次数,将字符串 A 转换为字符串 B。其中:|a|和|b|分别表示字符串a和b的长度,字符 l (L)是当a[i]!=b[j]时值为1,否则为0;i==0时,即s1为空,那么对应的dp[0][j]的值就为j:增加j个字符,使s1转化为s2。j==0时,即s2为空,那么对应的dp[i][0]的值就为i:减少i个字符,使s1转化为s2。指 字符串a 的前 i个字符和b的前j个字符之间的距离。

2023-04-20 23:29:07 525

原创 自助点餐系统(三)

目前还少了一些功能以及内容:热销菜,保存就餐者的点菜信息等等。实现了管理员的权限后,现在弄了用户的菜单。二、点餐 diancan()(三)查询 check()一、菜单menu()

2023-04-19 23:28:35 1276

原创 自助点餐系统 (二)

还有一些菜单的功能还没有实现,暂时就这些。将文件数据用结构体保存。

2023-04-18 23:32:56 171

原创 最小生成树

一张无向图,任意两顶点都是相互连通,并且是一个树结构,那么这棵树叫做生成树。当连接顶点之间的图有权值时,权值之和最小的树称为最小生成树。

2023-04-17 23:15:39 44

原创 自动点餐系统(C)项目

设计一个自动点餐系统,该系统的主要功能是管理员店家进行菜单的增删改查、结账等功能;就餐人进行查看菜单、点餐以及最后的结账等功能。目前在想着将食物的名字用一个文件进行保存,然后对其进行增删查改。再用一个文件来保存顾客选中的菜名和价格,好让顾客查看。对于control()函数暂时还没有想到具体需要包含的东西,所以打算想好再写,pin()可以写可以不写。今天就只写了这么一些,我先去熟悉熟悉文件,然后进行融合。结构体/类、链表、树、队列、查找、排序、递归、函数、文件操作、键盘操作等。2.目前只实现了管理员的界面。

2023-04-16 21:57:55 1220

原创 完全背包和多重背包

完全背包并不是找到上一件物品背包容量等于j-v[i]的时候,而是找到当前物品情况下j-v[i]的最大价值,因为我们物品可以无限次使用,故dp[i][j-v[i]]+w[i]的时候就是在求最大价值。接下来有 N 行,每行三个整数 vi,wi,si,用空格隔开,分别表示第 i 种物品的体积、价值和数量。接下来有 N行,每行两个整数 vi,wi,用空格隔开,分别表示第 i 种物品的体积和价值。定义:有一个背包的容积为V,有N个物品,每个物品的体积为v[i],价值为w[i],有 N 种物品和一个容量是 V的背包。

2023-04-13 21:57:38 551

原创 二叉树的并查集

一种树形的数据结构,用于处理一些不想交集合的合并问题。

2023-04-12 23:21:25 65

原创 01背包问题

动态规划算法原理:先解决子问题,再逐步解决大问题假设你是个小偷,背着一个可以装4磅东西的背包,你可盗窃的商品有如下三件:商品价格重量音箱3000美元4磅笔记本电脑2000美元3磅吉他1500美元1磅为了让盗窃的商品价值最高,你选择那些商品?每个动态规划算法从一个网格开始,背包的网格如下背包容量/商品1234吉他音箱笔记本。

2023-04-11 23:18:48 65

原创 哈夫曼树(Huffmantree)

(2)在森林F中选取两棵根结点的权值最小的树作为左右子树构造一棵新的二叉树,且置新的二叉树的根结点的权值为其左右子树上根结点的权值之和。在构造哈夫曼树时候,首先选择权值小的,这样保证权值大的离根最近,这样计算带权路径长度为最小,这是一种典型的贪心法。若规定根结点长度为1,则从根结点到第L层结点的路径长度为L-1。带权路径长度最短的树,权值较大的结点离根较近。如图所示,根结点权值为1,根结点的左子树结点权值为2,若两节点之间的连线有值,称为边权。从根结点到该结点之间的路径长度为该结点的权的乘积。

2023-04-10 23:28:58 298

原创 线索二叉树

遍历二叉树实质上是对一个非线性结构进行线性化操作,使每一个结点在这些线性序列中有且仅有一个前驱和后继,当以二叉链表作为存储结构时,只能找到结点的左、右结点信息,而不能直接得到结点在任一序列中的前驱和后级信息,为此引入线索二叉树来保存这些在动态过程中得到的有关。若p->LTag=0,则说明p有左子树,此时p的前驱有两种情况,若p是双亲的左孩子,则其前驱为其双亲结点;(2)如果p的左孩子为空,则给p加上左线索,将LTag置为1,让p的左孩子指针指向前驱pre,否则将p的LTag置为0;

2023-04-09 20:04:19 46

原创 KMP模式匹配算法

给出两个字符串 s_1 和 s_2,若 s_1的区间 [l, r] 子串与 s_2 完全相同,则称 s_2 在 s_1 中出现了,其出现位置为 l。(3)当i=3时,此时由 1 到 i-1 的串为“aba”,前缀“a”与后缀"a"相等,因此可以推算出next[i]的值为1;定义一个字符串 s 的 border 为 s 的一个非 s 本身的子串 t,满足 t 既是 s 的前缀,又是 s 的后缀。对于全部的测试点,保证 1<=|s_1|,|s_2|<=10^6,s_1, s_2 中均只含大写英文字母。

2023-04-06 22:17:51 71 1

原创 12.28总结

12.28总结

2022-12-28 20:46:16 100

原创 12.27总结

12.27总结

2022-12-27 18:42:57 109 1

原创 12.26总结

12.26日总结题目:马的遍历

2022-12-26 19:16:46 104 2

空空如也

空空如也

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

TA关注的人

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