- 博客(83)
- 问答 (1)
- 收藏
- 关注
原创 Servlet框架
Servlet是运行在web服务器或应用服务器上的程序,他是作为来自web浏览器或其他http客户端的请求和HTTP服务器上的数据库或应用程序之间的中间层。使用Servlet可以手机来自网页表单的用户输入,呈现来自数据库或者其他源记录,还可以动态创建网页。
2024-05-05 19:45:34
948
2
原创 Mybatis框架
MyBatis是一款优秀的持久层框架,它支持自定义SQL,存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口和Java POJO为数据库中的记录。
2024-05-02 11:21:42
1251
1
原创 树的重心——树的结构
除了重心以外的所有其他点,都必然存在一棵节点个数大于 n/2 的子树。树的重心是指对于某个点,将其删除后,可以使得剩余联通块的最大值最小。也就等价于一某个点为根的树,将根删除后,剩余的若干棵子树的大小最小。性质三:树中所有点到重心的距离和是最小的。如果有两个重心,那么到他们的距离和一样,反之,距离和最小的点一定是重心。将脸两个重心的边删除后,一定划分为两棵大小相等的树。mss[ ]表示x点所有子树大小的最大值,即如下图所示,其实2的子树大小的最大值为2。例如下图的树的重心就是2。
2024-03-31 14:18:07
677
原创 树的直径——dfs回溯
解题思路主要分为两步dfs,第一次dfs求的是从根节点(也就是1)开始,寻找直径最长的一条边,并定位最长边的另一个节点;第二次的dfs是从上面确定的最长边的节点开始(也就是再将它看作根节点),再次寻找直径最长的边,最后找出最大值即为所求。图中,首先从1开始查找最长边1-6-2(结果不唯一,只给出一种可能),确定另一端节点为2,再从2开始寻找最长边2-6-1-4(结果不唯一),最后返回最长边的长度4。第一行包括整数n,接下来输入n-1行,每行包含两个整数ai,bi,表示点ai,bi之间存在一条边。
2024-03-31 09:55:09
476
原创 数组中重复的数据——算法思路
利用set的特性(set里存放的都是不重复的数据),因为数组中的数据只出现一次或两次,所以直接将出现两次的数据放到list结果中,即得所求。
2024-03-26 09:23:28
224
原创 第N位数字——算法思路
一开始想的是将数字转换为字符串,直接能找出第n位数字,但由于n的取值范围过大,会超出运行时间。本题主要应用一种数学思想,直接根据规律计算。
2024-03-25 17:37:50
445
原创 找不同——算法思路
将字符串 t 转换成list类型,和 s 作比较,如果两边的字符相同,则将 list 中的相同字符移除,最后留下的就是新添加的字母。
2024-03-25 14:33:24
570
原创 计数质数——算法思路
当然这里还可以继续优化,对于一个质数 x,如果按上文说的我们从 2x 开始标记其实是冗余的,应该直接从 x*x 开始标记,因为 2x,3x,…这些数一定在 xxx 之前就被其他数的倍数标记过了,例如 2 的所有倍数,3 的所有倍数等。从小到大遍历每个数,如果这个数为质数,则将其所有的倍数都标记为合数(除了该质数本身),即 000,这样在运行结束的时候我们即能知道质数的个数。如果 xxx 是质数,那么大于 x 的 x 的倍数 2x,3x…一定不是质数,因此我们可以从这里入手。
2024-03-23 20:17:21
412
原创 反转字符串中的单词——字符串应用
本题解释:首先通过split方法去除字符串中的所有空格,并以空格做分割,将单词存放进数组中,然后逆序输出这个数组,以空格分割,再将最后的结果调用一个trim方法,去除字符串最后的所有多余的空格,以满足要求。
2024-03-23 17:00:55
310
原创 最长连续序列——算法思路
思路就是,先将数组排序,遇见相同的就跳过,如果相邻两位差1,则结果加1,特殊的,如果数组为空,则结果为0,如果数组中只有一个数,则结果为1。
2024-03-23 14:48:07
255
原创 验证回文串——算法思路
主要是将大写字母转换成小写(将字母异或32即可转换大小),并将数字也存入数组,除去其他字符。反转是通过list反相输入再比较实现的。
2024-03-23 14:25:44
216
原创 合并两个有序数组——算法思路
本题思路就是将nums1数组中的有效数字(除去最后nums2长度的0)存入list中,再将nums2中的数字存入list,最后将list转换回数组放入nums1。原本应用了System.arrayCopy()方法,是不需要进行数据类型转换的,但不知是什么原因,样例不能全部通过。原System.arraycopy()方法,不知道是哪的问题就放出来提供一个参考。此时,m=6,n=3。
2024-03-23 13:47:33
337
原创 加一——大数据的应用
根据提示可以得出初始数组的空间是很大的,所以要转成整数也需要一个很大的数据类型,long无法满足条件,所以要使用BigInteger类型(大数据类型),主要麻烦的是BIgInteger操作的对象是String,所以对每一个整数都要转换其数据类型,同时他也不能使用 * ,+等运算,只能调用它的add和multiply方法。先将输入的数组转换成整数,对整数进行加一操作,然后再转换回数组,这样就不用考虑加一进位和数位增加的问题,很简单的思路但是运行时间会较长。
2024-03-23 10:31:22
235
原创 只出现一次的数字——Map的使用
本题中主要运用了Map的方法来统计数组中每个数字出现的次数,由于技术有限,过程还是过于麻烦,目前并没有想到更简便的方法,以后想到了再来补充。
2024-03-22 17:35:59
184
原创 盛最多水的容器——算法思路
如果小于则计算 ( j - i ) * height [ i++ ];(先取height [ i ]的值,在对 i 进行自加 )并与area间取较大值;如果大于则计算 ( j - i ) * height [ j-- ];(先取height [ i ]的值,在对 j 进行自减 )并于area间取较大值。首先判断索引 i 处的高度是否小于索引 j 处的高度,最后得出所有容量中的最大值。
2024-03-21 20:41:23
433
原创 第三大的和——set特性
本题中主要使用了set的特性,即set中的内容不会重复,由此利用set存储所有三个数字的和,再通过将set转换为list(set是不可以进行排序取值的,只可添加,所以需要进行数据类型转换),利用list的sort方法,对所有的和进行从大到小的排序,最后输出第三位,即使本题结果。
2024-03-21 19:48:49
316
原创 拼数——dfs搜索
dfs(0,k,0);//i为判断的数组的位置,k为剩下未挑选的卡片数,pre为结果(拼成的数)此处为一种dfs搜索方法,但是较为复杂,其中有不是必要的因素,可以省去。
2024-03-21 17:36:16
251
原创 图书排序——希尔排序
随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。因此,我们需要采取跳跃分割的策略:将相距某个“增量”的记录组成一个子序列,这样才能保证在子序列内分别进行直接插入排序后得到的结果是基本有序而不是局部有序。用Arrays中的排序方法以及lambda表达式进行排序(最简单的方法,虽然并没有按照题目要求使用希尔排序,但是仍旧可以通过题目)(1)在第一趟排序中,我们不妨设 gap1 = N / 2 = 5,即相隔距离为 5 的元素组成一组,可以分为 5 组。
2024-03-20 20:59:29
345
原创 小怂爱水洼——dfs回溯
深度优先搜索算法(Depth First Search,简称DFS):一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所在边都己被探寻过或者在搜寻时结点不满足条件,搜索将回溯到发现节点v的那条边的起始节点。整个进程反复进行直到所有节点都被访问为止。属于盲目搜索,最糟糕的情况算法时间复杂度为O(!在探索过程中,一旦发现原来的选择是错误的,就退回一步重新选择,继续向前探索;为了求得问题的解,先选择某一种可能情况向前探索;如此反复进行,直至得到解或证明无解。
2024-03-20 18:27:57
191
原创 DNA序列修正——HashMap应用
另外,Java中没有交换(swap)函数,需要自己进行编写。利用HashMap的特性,将字母匹配转换成数字匹配。
2024-03-18 20:19:37
1045
原创 无尽的石头——算法思路
另一种是计算数组中的所有位置到达的步数,如不能到达则赋值为-1,最后查找目标位置的数组值,即离线方法。System.out.print("到达目标位置所需要的步数为(如不能到达则输出-1):");一种是只计算目标位置是否能够到达及到达步数,即在线方法。
2024-03-18 11:30:55
676
原创 分糖果——字典序
在字典中,单词是按照首字母在字母表中的顺序进行排列的,比如 apple 在 banana 之前。而第一个字母相同时,会去比较两个单词的第二个字母在字母表中的顺序,比如 account 在 advanced 之前,以此类推。又称字母序,表示英文单词在字典中的先后顺序。
2024-03-18 10:40:08
331
原创 第k个数——字典序
第二种(test1)也是将数字转换成数组,然后通过列表进行字典序排序(重写排序方法,对字符串的每一位都进行比较),得出结果;第三种(test4)是一层一层的查找(0->10->100),首先确定字典序在他前面有多少个,然后再一位一位的寻找,直到最后找到。进行字典序排序后,更新数组为1,10,11,2,3,12,4,13,5,6,7,8,9。输入13,得到的初始数组为1,2,3,4,5,6,7,8,9,10,11,12,13。其中要找的是第2位(索引为2-1=1),所以输出10。
2024-03-17 17:45:54
449
原创 小蓝的漆房——算法思路
本题只要是通过枚举的方法,算出涂成每一种颜色所需的天数,最后在所有天数中找出最小值(由题可知,最多只有60种颜色,所以可以尝试算出每种颜色所需的时间)。代码注释有详细的解释……
2024-03-16 17:49:19
720
原创 小蓝和小桥的挑战——算法思路
即可,唯一需要去考虑的就是数组中是否会遇见0,一旦能遇见0,就说明乘积会为0,要加一次操作(不用去考虑加在谁身上)。价值之和也是一样,只需要看。之后,计算此时的数组的和,如果和为0,就加一次操作(同样不考虑加在谁身上,只要和不为0 就可以)。一些简单的算法思路,不用去考虑数组的所有数值,只要看总价值之。
2024-03-16 17:25:54
483
原创 小蓝的零花钱——序列应用
整个题目的思想就是,将每次两边奇数和偶数的数目相等时,计算两端数字大小的差值,并存入列表中,将列表从小到大排序,从小开始看总零花钱足够进行多少次操作。具体的代码解释在程序中给出……
2024-03-16 16:59:41
449
原创 最长上升子序列——动态规划
比如,对于序列(1,7,3,5,9,4,8),其中的上升子序列有(1,7,9),(3,5,9),(3,4,8),(1,7,5,9)等等(只写了一些例子),而这些子序列中,最长的是(1,7,5,9),长度为4。可以退出状态的转移方程为if(dp[i]>dp[j]) dp[i]=Math.max(dp[j]+1,dp[i]);最长上升子序列,简称LIS,假设有一个序列bi,当b1<b2<……<bs的时候,成这个序列是上升的。这是典型的dp问题,定义dp[i]表示以索引i结尾的最长子序列长度。
2024-03-16 10:07:57
371
空空如也
python学生管理系统可视化
2023-12-09
编译原理中缀表达式转换成三元式
2023-12-02
但是有一个地方我不太明白:为什么要进行一个对1000000007的取余操作
2023-10-16
字符串排序排序C++
2021-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人