- 博客(20)
- 收藏
- 关注
原创 Y总课程第一讲
快速排序的算法是基于分治而言的,定义两个指针left和right和一个a[start]参考值是其中的关键,主要的思想就是先移动右边的指针不断判断是不是大于等于参考值,如果大于等于那么就往左边移动,同理左边的指针要不断判断是不是小于等于参考值,小于等于的话就往右边移动,知道碰到一起了,那么现在指针所指的值就会是一个中间的界限,只要把此时的i,j和原来的参考值进行交换即可,再采用递归的思想对边界左边和右边的数组进行排序即可。
2024-02-10 21:29:50
228
1
原创 Y总基础算法课day2
高精度加法的思想,高精度加法是为了计算长度非常长的数而存在的,比如计算的结果超过int型能表示的变量的时候,这时候就需要进行高精度加法的运算了,算法的思想是基于用数组去拆分原字符串的,从0-N分别从数的低为到高位这样方便低为的进位传入高位。高精度减法的计算和高精度加法的计算其实非常的类似,相比于高精度加法的进位而言,高精度减法就需要进行减法的借位,具体的算法如下。高精度的除法也是大数除上一个整数的,但是相比于人而言,计算机会更加的傻一些,它必须从最高位开始,步骤如下。1.保存当前长数组的最高位到0的位置。
2024-02-10 12:35:29
634
1
原创 力扣刷题日记17电话号码组合
在循环内添加到tem字符串中,然后再进行深搜,直到循环出口,返回,返回时弹出一个字符,然后再进入下一个for循环i++,压入栈,以此循环。本题是一道关于树的深度优先搜索遍历的题,然后利用回溯的算法最后求得答案。代码如下,理解起来可能比较复杂,大致说一下核心代码。从图上看就是深度优先搜索遍历。
2024-01-31 17:00:04
233
原创 力扣刷题日记565数组嵌套
看似比较复杂的题目其实是一道关于关于有向图图求最大回路的问题,如果画出来的话其实也挺好理解的,代码如下,每次就遍历到底然后计算最大回路即可。比较难理解的就是那个i,作用域好像仅仅对循环内有效,跳出后立马重置。
2024-01-31 16:08:40
202
原创 力扣刷题日记227基本计算器||
大致思路:本题的大意是制作一个简单的计算器,用于乘除和加减的运算,需要利用一个栈来存储待操作的数,以及前一个数和当前的数字,并且在乘除法优先级最高的情况下呢,直接对数进行操作即可,而加法和减法就相应入栈,最后一并相加即可。每当提起一个操作符号的时候需要进行的操作都是非单个数字的,但是加减法却可以是单个,这也是本题代码的精妙之处,乘除法需要保留当前以及栈顶的数挺难想的。代码中比较难想的就是一开始的初始化presign='+'还有判定i=n-1。时间复杂度为O(n)
2024-01-30 16:11:33
181
1
原创 力扣刷题日记150逆波兰表达式
经典的用栈求逆波兰表达式的值,本次的实验倒也不难没有涉及优先级等的东西,如果加入括号符等的就比较麻烦了,代码如下。整个的思路为判定是数字还是运算符,然后进行对应的入栈和出栈。
2024-01-29 18:19:59
155
原创 力扣刷题日记71简化路径
本题的难度为中等但是却比较难实现,我一开始的思想是遇到“..”和‘.’直接跳过即可,实际上没有考虑到很多的问题,我想接下来一起解读这段代码为好。2.特别判定'.'和'..'如果说为前者不加入栈,为后者的话需要出栈。1.定义了split函数,根据/分割字符串。
2024-01-29 17:13:30
165
原创 力扣刷题日记682棒球比赛
本题的题目其实挺长但是就本质上而言是熟悉对栈的入栈出栈进行的一种操作,如push_back和pop_back和stoi等。
2024-01-28 16:15:57
236
1
原创 c++刷题日记442寻找数组中重复的数据
主要的原因还是在于哈希表的遍历加上找数的时间复杂度是O(nlogn)然后官方的求解方法的时间复杂度为O(n)看了一下官方的做法大致是不断去替换原来的位置然后判断是否在位置上有对应的数字。我一开始想到的就是用哈希表去存储然后当数量到达两个的时候进行输出。寻找数组中出现了两次的数然后对它进行保存以及输出。后面发现运行的时间为。反正就挺无语哈哈哈哈。
2024-01-28 15:41:54
270
1
原创 力扣刷题日记697数组的度
第二个for为找出最大以及最小的长度的for,也更加难理解一些,在不断遍历的过程中判断是不是最大的出现频率,然后保留其最短的数组长,这样遍历到最后一定能找到最大的并且能对应上最小的数组。题目的要求是找出出现频率最大但是连续子数组中最短的序列。其中第一个for为记录数字出现次数和首位出现位置的循环。2.找出出现次数最多的数,并且计算最短的序列。
2024-01-28 14:44:57
185
1
原创 力扣刷题日记448寻找缺失的值
原因是官方给的代码的时间复杂度为O(n),而遍历一遍数组+查找哈希表的算法需要的时间复杂度为O(nlogn)所以时间上会有这么大的误差。本题其实要考虑的是数组的长度,因为题目限定死了,我一开始还定义了一个maxnum来算最大的值,后面发现这样的思路有问题。执行的结果不敬人意,原因是使用了哈希表,其实并不用,只需要再原数组的基础上进行修改即可,参考官方的代码我做了如下的修改。最后把时间提升到了40ms。
2024-01-28 14:35:47
425
1
原创 力扣刷题日记c++
用单个hash在我看来最精髓的地方之处是利用了其“键”的特性然后进行索引计数,最后找到值。暴力解非常容易让人想到,但是时间上会用大概45ms左右,梦开始的地方,两数之和,暴力解法+hash表单次的排序。所以可以采用哈希表的计算方法,让算法时间更加的短。接下来采用的是单个哈希表的遍历的算法。
2024-01-23 00:02:10
447
1
原创 October 17th Advanced Mathmatic learning summary
总结,总体上微分方程的难度并不是很大,多都是对固定的套法,但是在实际的应用题中,微分方程却会是比较难的。很明显,y^1-n的阶数比y-n高,所以让高阶的变成z即可就是z=y^1-n然后两边对x求导即可。y'' = f(y',y)或者y''=f(y',x) 缺少了x或者y的两种情况,其实都让。2.变量中含有y/x的,那么就让y/x=u然后y=ux,两边对x求导。时,这时候通解里面的a是等于η的就要在特解的形式前加上一个n即设特解。,对应的特征方程就不写了,无非是把y的n阶导变成相应的n次就行了。
2023-08-17 14:16:10
141
1
原创 力扣刷题日记4月13日
简单的我来说明一下,如果数组中的元素只出现过一次的话,那他们对应的位置的元素肯定是只出现过一次的,那如果出现了2次的话,一定会在不该出现的位置有着那么一些奇怪的数字,这个算法倒是挺有趣的,带着某些重复的值在一直换来换去哈哈哈哈,有意思。今天刷的题目是关于数组中重复数据的题,想不到这题居然能是中等的难度,感觉还是之前的简单的题目比较难一些,序号是442,之前的简单的题目的序号是448题。
2023-04-13 20:17:50
135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人