- 博客(14)
- 收藏
- 关注
原创 2024.2.21 刷题记录
先递归处理head->next,即可将head后面的结点全部反转,再将head->next结点的next指针指向head,head的next指向空即可。迭代思想,maxDepth函数返回以该结点为根节点的树的最大深度,则分别迭代该节点的左子树和右子树,并使答案+1。先遍历一遍链表找到尾结点和链表长度,然后遍历链表,直接将偶节点接入尾结点,并不断更新尾结点。迭代思想获得树的叶子序列,先迭代左子树,再迭代右子树,当到叶子节点时,将其存入数组。空间复杂度:O(n)空间复杂度:O(n)空间复杂度:O(n)
2024-02-22 09:52:44
473
1
原创 2024.2.2 刷题记录
用一个数组存储所有信号时间,用一个指针指向当前信号的前3000区间内合法的信号角标,最后用角标做差求解。循环遍历能走的最大距离,当距离超过数组长度时,即为true。时间复杂度:O(n²)时间复杂度:O(n)空间复杂度:O(1)时间复杂度:O(n)空间复杂度:O(n)空间复杂度:O(n)
2024-02-02 17:32:26
151
原创 2024.2.1刷题记录
另创建一个原数组的复制数组,将复制数组沿对角线翻转,使得复制数组的每一行对应原数组的每一列,最后两重循环判断是否相等。进而可以用双指针的想法,右侧指针依次往后移动,当区间内0的数量超过k个时,左侧指针再前移退0,过程中不断更新最优解。遍历数组,另创建已遍历数组,只有当新行星向左,原行星队列最后面的向右时冲突,循环冲突,看新行星能向左撞碎几个行星。先求前缀和,遍历每个位置,用全部的和减去当前位置的前缀和得到其后缀和,然后判断其前缀和和后缀和,注意边界问题。时间复杂度:O(nlog(n))时间复杂度:O(n)
2024-02-01 17:54:48
1023
1
原创 《算法笔记》——经典题型
一个点周围有八个方向,每个方向都可以对应一个二进制数,第一方向的左右方向对应的二进制,从右至左第一位相同,第二位不同,第三位枚举,所以对于一个方向可以快速确定他的左/右转90°的方向,对序列的区间进行操作,做到O(logn)插入,O(1)查询。一个数的二进制末尾有多少个0,相当于这个数有多少个因子2。下凸函数求极小值点,中间点小于等于两个端点和的一半。对于一个字符串,将其所有的字串转化为一串数字存储。存储a数组中每k个长度的最大值和最小值。求解a数组每个元素左边第一个小的数。
2024-02-01 14:51:03
196
1
原创 《算法笔记》——基础算法
用数组存,下标从1开始,heap[1]为根节点,对于结点heap[x],其左儿子heap[2*x],右儿子heap[2*x+1]O(1)时间复杂度给某几项加上常数C。前缀和求解字符串字串中字符出现次数。O(1)时间复杂度计算出几项的和。
2024-02-01 14:48:29
181
1
原创 《算法笔记》——数论
合数分解质因数,只可能存在一个大于根号n的数,从小到大依次枚举质数到根号n,最后对剩下的数进行特判即可。对于一个数n,从1到n中,与n互质的个数记作Φ(n),Φ(n)就被称作欧拉函数。因为模数是质数,所以求逆元使用费马小定理,由于要取模,所以对分母用逆元算。解法(二):1e9+7是质数,可以用快速幂求解逆元进而求解。当模数不是质数时,需要用到扩展欧几里得算法求解。用质数的欧拉函数求解合数的欧拉函数。定义求解,时间复杂度O(b)解法(一):动态规划求解。因为m之间是互质的,而。,辗转相除法的逆运算。
2024-02-01 14:37:57
1330
1
原创 《算法笔记》——图论
负环无影响,当不确定的集合内的点到已经确定的点的集合最短距离是正无穷时说明不存在最小生成树。对边从小到大选择不构成环的边,是否成环使用并查集进行判断。边权只有0或1的图论问题,求解图中两个点的最短路问题。欧拉回路:一条在同一顶点处开始和结束的欧拉路径。欧拉路径:图中的一条路径,恰好访问每个边一次。经过图中所有节点的回路,每个节点仅经过一次。半欧拉图:具有欧拉路径但不具有欧拉回路。2.有两个点的度数是奇数,其余都是偶数。4.路径有n+1个点(图有n个点)2.所有点的度数都是偶数。
2024-02-01 14:35:10
201
1
原创 《算法笔记》——树
用一维数组存储数,按照左右儿子数组下标的性质,判断数组最后一个元素的下标是否等于结点总数,如果等于,则说明是完全二叉树,一维数组的下标对应树的逻辑结构。下标1~n对应n个结点的树,对于下标为x的结点,x/2为其父节点,x*2为其左儿子,x*+1为其右儿子。需要在迭代构建子树时,确定子树在序列中的区间,可以枚举所有可能。当后序序列中的根节点在中序序列中找不到,则无法构建树。n个点,n-1条边的一个连通图,一定是一棵树。二叉树的中序排列为递增序列则为二叉搜索树。二叉搜索树的镜像,其中序序列颠倒。
2024-02-01 14:32:43
268
原创 《算法笔记》——字符串处理
是覆盖拷贝,将source全覆盖拷贝到destination,会把’\0’也拷过去,且必须考虑destination的空间够不够(destination的空间必须>=source的空间)输入,但可以将char数组赋值给string。
2024-02-01 14:30:02
244
原创 2024.1.31 刷题记录
先对数组进行排序,排除数组前端等于k和后端大于等于k的元素,两端求和,当和小于k时,前端后移,反之后端前移,当等于k时,即找到一个答案,两端均向内移动一位。当长字符串某位置字符与短字符串指针位置相等,指针向后移一位,根据指针位置判断是否存在子序列。使str1为短字符串,当长字符串前面部分与短字符串不相同时,说明两个字符串没有公因子。两个指针从两头开始,移动高度短的那个指针,因为此时的容积对于该矮位置为最大容积。当两个字符串都有该公因子时,即找到最长的公因子,直接返回答案。遍历长字符串,定义短字符串的指针。
2024-01-31 17:35:17
1339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人