- 博客(32)
- 收藏
- 关注
原创 没有营业执照,也能申请微信支付?!这是一篇蓝兔支付对接入门教程
目前支付宝、微信的网上支付都需要营业执照,个人无法直接签约,给想学习和体验支付功能的开发者造成了阻碍,但是网上也有第三方支付申请渠道,可以实现微信支付对接。本文就是介绍如何实现一个蓝兔支付平台的个人商户签约,希望对大家能有帮助!🤔
2024-04-08 12:08:56
5525
原创 Java+Selenium+Junit5对个人博客进行自动化测试(包含代码和视频)
本篇文章将记录作者和带领读者,使用Java+Selenium+Junit5测试框架,对个人博客系统进行自动化测试。作者的个人博客系统分为前台系统和后台系统,这次测试主要测试前台的注册、首页、详情页、个人中心界面,后台的登录和标签管理界面。
2024-04-03 23:03:25
1764
原创 【算法通关村】解析堆在查找和排序的应用
构造只有k个的小根堆,堆满了之后,并不是所有新来的元素都可以入堆,只有大于根元素的才可以插入到堆中,否则就直接抛弃。小顶堆出堆的序列是升序。大顶堆出堆的序列是降序。
2023-10-18 23:57:56
147
原创 【算法通关村】原来这就是堆
堆价值就在于大顶堆的根节点是整个树最大的那个,增加时会根据根的大小来决定要不要加,而删除操作只删除根元素。这个特征可以在很多场景下有奇妙的应用,后面的算法题全都基于这一点。堆的效率高。因为堆元素的数量是有限制的,一般不用将所有的元素都放到堆里。后面题目中可以看到,在序列中找K大,则堆的大小就是K。如果K个链表合并,那么堆就是K。口诀:查找:找大用小,大的进;找小用大,小的进。排序:升序用小,降序用大。查找的方法就是:找 k 大, 则用小顶堆,后序的数据只有比根元素更大时才允许进入堆。
2023-10-18 23:55:17
87
原创 【算法通关村】数组加法问题解析
/ if(add!=0){ 数组[0] + 1000 结果应该是[1,0,0,0] 而不是[1000,0]进位有的好说,有的[9,9,9]不好说了。从后向前加的时候,到了A[0]的位置计算为0需要再次进位,但是数组却不能保存了,咋办。因此只用申请一个空间比A[]大1个的数组B[],然后将B[0]设置为1就OK。if (sum >= 10) { //妙,这个进位。二进制数字是字符串形式,不可以转成int型,可能溢出。注意while条件,三个,不要越界,处理进位。+1,无非两种情况,不进位返回,进位。
2023-10-18 23:48:03
154
原创 【算法通关村】数字统计问题处理模板
无论是乘以-100还是-1,对ans的贡献都是加一个负号,所以我们看负数有几个就OK。找0的个数 == 找2*5的对数 == 找5因子的个数(2更多,所以找5)别忘了还有25,它可以拆成5*5。将每个数累乘,可能会溢出。
2023-10-18 23:46:05
143
原创 【算法通关村】字符串反转问题解析
' '){ //确保不重复添加连续的空格字符。方式三:官方题解,把每一步都分开写的。去掉开头结尾空格,翻转整个字符串,翻转每个单词,变成正确的次序。//维护一个指针j从后往前遍历字符串,当需要字母时就使用它。方式二:用双指针找到各个单词,然后存入列表,然后倒序输出。//有一种倒序输出的节奏,前提是满足i是字母。方式四:倒序遍历,倒序添加,双指针思想。方式一:调api,面试不能用!//用i和j,对撞型双指针。方法二:栈,反序输出字符串。
2023-10-18 23:38:56
126
原创 【算法通关村】位移的妙用
这种方法在JDK,Dubbo等源码中都能见到,特别是涉及协议解析的场景,几乎都少不了位操作。方式一:遍历每一位,判断是不是1,统计1出现的个数。用&和左移或右移判断。//`要加临时变量记录下x的值。可以将最后一个1变成0,统计1的个数。均分均分均分,翻转翻转翻转,合并合并合并。对于递归的最底层,我们需要交换所有奇偶位。for循环嵌套while循环的经典错误。x每次被干成0,又+1循环,又干成0。n&1即取出n二进制的最后一位。比特数即二进制中1的个数。自己写的犯了个大错误!
2023-10-18 23:22:24
51
原创 【算法通关村】算法通关村——位运算
为什么会有反码和补码?人觉得原码挺好,根据符合位判断符合,根据真值计算加减。但是计算机,只会加法,1-1==1+(-1)=0,这样设计简单。-0是什么?好奇怪,0没有符号,但是有两种表示方式,00000000,10000000,好浪费啊。于是补码来了完美!除此之外,这样0用00000000表示,而1000000可以表示-128这样使用补码表示的范围为[-128,127]。32位int类型,可以表示范围是[-2^{31} ,2^{31}]。
2023-10-18 23:18:02
69
原创 【算法通关村】二分查找在找缺失数字的应用
对于有序的也是可以采用二分查找,这里的关键点是在缺失的数字之前,必然有nums[i] = i,在缺失的数字之后,必然有nums[i]!因此,只需要二分找出第一个nums[i]!= i,此时下标i就是答案了。如果数组中没有找到次下标,那么缺失的就是n。
2023-10-12 23:06:49
77
原创 【算法通关村】透彻理解二分查找
把复杂的问题分成两个或更多相同的子问题。直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。错误的,>>的优先级低于 +-//假如low和high很大,low+high可能会溢出。//除的效率非常低,一般用移位来代替。找到了目标值,左移,直到找到左侧第一个。找到0了,不能左移,直接返回mid。如果要重复找左侧第一个。
2023-10-12 23:04:16
103
原创 【算法通关村】轻松搞定二叉树双指针问题
if(t1.val!= t2.val){ //一定要放第三个,保证不为空。递归判断两个子树的内侧节点和外侧节点是否相等。先判断根节点是否相同,再判断左右子节点。一个遍历顺序是左右中,一个是右左中。//都为空,也是相同。两棵树同时进行前序遍历。不空,不空=》值相加。
2023-10-12 22:53:49
157
原创 【算法通关村】递归
只有列举清楚了才可能将终止条件写完整,所以在面试的时候千万不要上来就写,而应该先和面试官讨论你的设计方案,不要害怕与面试官讨论!假如有明显的缺陷他甚至会提醒你的,所以这也是借力打力的一个技巧。启示我们,先考虑清楚什么情况下终止,而且相关代码要写在靠前位置,之后再考虑递归的逻辑,遮阳降低编写的难度。先猜测递归关系,不需要证明,用几个较小的值验一下,再用几个较大的值验一下。不一定是触底才开始反弹,而是达到某种要求就停止。先分情况写出来,再看能否精简优化,不要步子迈太大。在执行递归之前,一定会有一个终止条件。
2023-10-12 22:49:46
33
原创 【算法通关村】树的层序遍历—原来如此简单
/List不能被实例化,它是接口,不是class。//List不能被实例化,它是接口,不是class。//获取当前队列的长度,即当前这一层的元素个数。//加入的是树节点的值。使用的内存通常更少,因为它不需要为每个元素存储两个引用(前一个和后一个元素的引用)。//加入的是树节点的值。好,尤其是在大部分情况下,因为它是基于数组实现的,随机访问元素的速度更快。在遍历完一层节点之后,将存储该层节点值的列表添加到结果列表的头部。
2023-09-17 12:30:08
146
1
原创 【算法通关村】栈和队列互相实现问题解析
队列1负责存队列元素,队列2负责辅助入栈。出栈都是队列1负责。入栈时,先入队2,再把1的元素入队2,然后交换1和2。outStack.isEmpty()){ 错误的,加!一个输出栈,负责pop和peek。一个输入栈,负责push。输出,先将输入栈的元素压入输出栈,再输出。Queue操作是,offer,poll。
2023-09-17 01:00:45
106
1
原创 【算法通关村】第四关栈白银挑战笔记
/妙,灵活处理第一个push。//妙,用不着max()了。对于popMax(),xStack出栈存入辅助辅助栈,直到找到最大值。因此我们可以使用一个辅助栈,与元素栈同步插入与删除,用于存储与每个元素对应的最小值。
2023-09-04 23:58:09
95
1
原创 【算法通关村】第四关栈青铜挑战笔记
采用顺序表实现的的栈,内部以数组为基础,实现对元素的存取操作。在应用中还要注意每次入栈之前先判断栈的容量是否够用,如果不够用,可以进行扩容。top有得地方指向栈顶元素,有的地方指向栈顶再往上的一个空单位。面试的时候直接问面试官,top指向哪里。System.out.println("值不能为空");//直接取元素会报异常,需要先判断是否为空。top先将栈顶元素取出,然后再执行top--。peek():显示栈顶元素,但是不出栈。empty():判断栈是否为空。push():增加一个元素。
2023-09-04 23:56:12
137
1
原创 【算法通关村】第三关数组白银挑战笔记
left找等于val的,right找不等于val的。left遍历,等于val,就用right覆盖。不等于val就往后。//slow表示可以放入新元素的位置,索引为0的元素不用管。当nums[fast]==val时,fast移动,slow等待到不同时。没有说清楚是针对于字符串还是针对于字符串数组,所以这里分类进行讨论。当nums[fast]!=val时,fast和slow一块移动。快指针负责数组遍历,慢指针指向有效数组的最后一个位置。//循环起到了快指针的作用。快指针遍历,慢指针等待。lc163缺失的区间。
2023-09-03 22:24:38
133
原创 【算法通关村】第三关数组青铜挑战笔记
栈和队列又称为访问受限的线性表,插入和删除受到了限制,只能在固定的位置进行。而Hash比较特殊,其内部真正存储数据一般是数组,但是访问是通过映射来实现的。第一种:每次扩充增加固定数目的存储位置,如每次扩充增加10个元素位置,这种策略可称为线性增长。if(size>=a.length){ //size=a.length 下标从1开始。if(size>=a.length){ //size=a.length 下标从1开始。//index不可能为size。if(nums[i]>nums[i+1]) //升序。
2023-09-03 22:22:50
87
原创 【算法通关村】第二关链表白银青铜挑战笔记
/ 第 2 步:从 pre 再走 right - left + 1 步,来到 right 节点。// 第 1 步:从虚拟头节点走 left - 1 步,来到 left 节点的前一个节点。//反转,头插法倒着来。//保存next位置。// 因为头节点有可能发生变化,使用虚拟头节点可以避免复杂的分类讨论。//移动到left-1的位置。// 第 4 步:同第 206 题,反转链表的子区间。// 第 3 步:切断出一个子链表(截取链表)// 第 5 步:接回到原来的链表中。// 注意:切断链接。
2023-09-02 10:10:42
63
原创 【算法通关村】第一关链表白银挑战笔记
没有思路怎么办?常用的数据结构有数组、链表、队、栈、Hash、集合、树、堆。常用的算法思想有查找、排序、双指针、递归、迭代、分治、贪心、回溯和动态规划等等。
2023-08-31 21:04:34
253
1
原创 【算法通关村】第一关链表青铜挑战笔记
时间复杂度是,而不是实际时间。时间复杂度针对来看的。凡是处理时间复杂度,一定要注意一点:那就是之间的关系。
2023-08-29 20:30:21
394
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人