自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 问答 (1)
  • 收藏
  • 关注

原创 尊享面试100(272.最接近的二叉树搜索值|| python)

刚开始想着用最小堆,把每个元素都加进去,然后找出最小的k个值,复杂度应该是(n+klogn)3.双指针,一个指针向左走,一个指针向右转,距离target最小的节点的值保留。终于发现,题目给的是二叉搜索树,特点是:左子节点<当前节点<右子节点。复杂度为(n+logn+k),四舍五入满足题目的条件。2.找到第一个大于target的值。题目要求在(n)的复杂度下解决。1.把所有节点都放在列表ls中。

2024-05-06 19:21:55 125 1

原创 尊享面试100题(314.二叉树的垂直遍历python)

回顾一下,发现init_idx这个函数没必要,他目的是,如果中间节点root的列的编号为0,那么最左边节点的列的编号为self.idx,可以推出,如果最左边节点列的编号为0,那么root排在第-self.idx列。可以省掉这一步,直接设置root节点为第0列,左节点为-1列,右节点为第1列,最后在把列排个序。这样的话,左节点-1直接变道0,root变道1,右节点变道2.刚开始我使用的还是dfs,发现过程确实复杂一些,不能从上到下遍历。题目关键词,从左到右,从上到下,那么使用bfs宽度优先算法。

2024-05-06 18:47:57 185 1

原创 leetcode尊享面试——二叉树(python)

对于当前节点node,他的左子树血脉纯净(为同值子树),右子树血脉纯净(为同值子树),node的值等于左右子树节点的值。全是if判断,推理!

2024-05-05 16:14:11 143 1

原创 leetcode尊享面试100题(549二叉树最长连续序列||,python)

思路使用dfs深度遍历,先想好这个函数返回什么,题目给出路径可以是子-父-子的路径,那么1-2-3可以,3-2-1也可以,那么考虑dfs返回两个值,对于当前节点node来说,返回一个顺序的长度的最大值p,一个逆序长度的最大值b,初始值都为1。例如,当前节点值为3,下面有两个子节点1-2,那么p为3,b仍为1。这是返回的值,那么对于当前节点,以node为终点的最大长度=max(p,b),还有一种经过node节点的路径需要考虑,例如,左节点为1,右节点为3,当前节点为2。题目不长,就是分析时间太久了。

2024-05-05 15:43:49 140

原创 LeetCode面试298,二叉树最长连续序列(Python)

从上到下遍历,建立一个dfs(u, v, length),u为v的父节点,v为u的子节点,length以父节点为最后一个节点的序列长度(初始长度为1)如果子节点刚好比父节点大1,那么length + 1,反之,length = 1。题解中提出一种思路可以同时进行dfs,只用把所有节点遍历一遍。但是这样需要两个dfs分别进行,那么时间复杂度就上去了。开始想着dfs,两种情况。2.不以root为根。再继续遍历v的子节点。

2024-05-03 19:17:24 243 1

原创 欧拉回路(leetcode 重新安排行程)

再重新分析一遍第一部分,节点1--> 节点2-->节点3-->节点1,发现最终到达节点1的时候,无路可走,节点3又可以走其他路,那么可以推出,从节点3-->节点1这一段路应该是最后的一段路。第一部分:那么算法的流程是,节点1--> 节点2-->节点3-->节点1。第一部分的流程变成:节点1--> 节点2-->节点3--> 节点4--> 节点6-->节点7-->节点4-->节点5-->节点3-->节点1。第一部分的流程变成:节点1--> 节点2-->节点3--> 节点4-->节点5-->节点3-->节点1。

2024-05-02 19:09:09 428

原创 latex文中参考文献排序

导言区添加包,能保留原来的期刊要求的排序,在文章中参考文献的顺序也可以从大到小排序。有时候在文章中,参考文献是乱序。

2024-04-29 16:34:04 48

原创 leetcode 循环列表的插入(Python)

找到最小值,最大值需要循环一遍列表,如果当前cur元素的值<nex元素的值,说明后一个节点更大,让nex = cur,继续循环,直到nex=<cur,那么就找到cur为最大值,nex为最小值。坑2,列表为【3,3,3,5,3】,错把第一个3当做列表开头,因此条件变为当前cur元素的值=<nex元素的值。首先我们需要找到列表中的最小值,最大值这个节点,因为找到后可以与我们的新元素进行比较厚插入。坑1,列表为【3,3,3】,列表会无限循环,因此加一个条件nex!题目如果不进行思考,巨多坑。

2024-04-28 19:30:45 238 3

原创 leetcode 边双连通tarjan(python)

先回顾一下强连通分量,首先维护dnf和low两个列表,dnf【i】表示第i个节点的编号,low【i】表示第i个节点能到达的最小节点编号。例如节点0可以到1,节点1能到达2,节点2能到达0,那么可以推出low【1】= 0。强联通是有向图,而边双连通是无向的,那么如果某次到达了v节点,不能让他再顺着原路返回父节点u,否则low【v】肯定等于low【u】,总结就是从u节点到达v后,不能再从v到达u。如果low【v】= dnf【v】,说明节点v不能到达v的父节点u及之前的其他节点,就是说u到v只有一条边。

2024-04-27 14:39:04 129 1

原创 leetcode最大间距(桶排序+Python)

【代码】leetcode最大间距(桶排序+Python)

2024-04-22 19:44:55 172 4

原创 LeetCode 课程表二(拓扑排序+Python)

这里使用卡恩算法,主要维护一个列表cnt,cnt【i】表示能到达节点i的边,比如说:a到c有一条边,b到c有一条边,那么cnt【c】= 2。当然,如果从a走到c一次,cnt【i】= 1。如果b再到cc一次,那么cnt【i】= 0。如果某个节点i,cnt【i】= 0,说明没有边能到达i节点,就是说i节点前面没有其他节点了,那么可以选择i节点。使用桶排序算法中的kahn(卡恩)算法,也可以使用dfs。

2024-04-22 18:52:14 248

原创 给字符串添加加粗标签(AC自动机+Python)

ac自动机主要维护两个列表,一个列表ch,ch[f][idx]表示从父节点f向idx这个方向走,走到的节点。另一个列表nex,nex[i]表示节点i回跳边的节点。确实是通过了,但是!暴力解法居然比ac自动机更快!可以暴力解决,但是为了锻炼一下ac自动机的编程,我们使用ac自动机。下面是暴力的,上面是ac自动机。

2024-04-22 16:58:35 274

原创 701强连通分量(python)

Tarjan 算法主要是维护两个列表dnf和low,dnf[i]记录到达i这个点的次序,low记录i这个点的祖先次序。如果dnf[i]==low[i],就是说i这个点就是祖先节点,如果dnf[i]!这题用强连通分量 Tarjan 算法,强联通:对于任意两个点u和v,u可以到达v,v也可以到达u。这题需要考虑有重边,自环,同样别忘记可能会有两个点u和v,u不能到达v,v也不能到达u的情况,就是u和v不在同一个图中,数据中会存在几个图的情况。遇到一个问题就是,需要考虑数据中存在不同的图!

2024-04-21 18:58:42 206

原创 KMP算法(Python)

p[j+1],让j=nex[j],意思是发现aabaaa和aabaab不匹配了,现在找到aabaa的(相等前后缀的最大长度),那就是aa,j跳到2的位置,相对于j = nex[j]。找到aabaa的(相等前后缀的最大长度)相对于找到1,2(aa)和4,5(aa)相等,再考虑aa+a和aa+b匹不匹配,看起来不匹配,再找到aa的(相等前后缀的最大长度)为(a),那么a+a显然和a+a相匹配。目前在最大长度的情况下,前缀是aabaa,后缀是aabaa,分别编号1,2,3,4,5。

2024-04-19 19:59:49 390

原创 AC自动机简单版(Python)

代码待优化,洛谷的居然没过!

2024-04-18 19:27:37 195

原创 leetcode(474.最大连续1的个数)(python)

dp[i][0], dp[i][1] 可以缩写成d1,d2。因为第i个元素的状态,只需要已知dp[i-1][0]和dp[i-1][1]。nums[i]为1的情况,nums[i]为0的情况,我希望还是大家顺着这个思路自己尝试一下。dp[i][1]表示前i个数字,以第i个元素结尾,只存在一个0,其他全为1的个数。dp[i][0]表示前i个数字,以第i个元素结尾,全为1的个数。个人觉得(以第i个元素结尾)这句话很重要,怎么感觉哪都用到过。题目要求数组的*****的个数,想到dp动态规划。

2024-04-18 16:00:43 220 2

原创 4202. 穿过圆 (python)

把整个坐标系想象成一个大圈,编号就给他当m,先把能括住每个点的最小圈记录下来,再把能括住某个圈的最小圈记录下来,这样每个点都有父圈,每个小圈也有父圈。这样每次询问a和b的距离,可以通过计数经过的父圈节点来计算距离。怎么快速计算到父圈的距离呢?通过创建st表,st[i][j]表示编号i点经过2**j的父圈到达的父父父....圈编号。但是k=10**5次方,算法超时。

2024-04-12 20:01:41 173

原创 3210. 最优灌溉+prim (python)

要使图的整体权重加起来最小,那么肯定选(prim或者kru),论算法编写简单程度,肯定选prim。这题特别适合练习prim和kru,建议两种算法都使用一遍。prim时间复杂度(nlogm),每个点都要遍历,并且需要用最小堆使得队列里的元素排序。kru时间复杂度(m),每个边都要遍历,从边中最小的两个点进行连线。首先看一下数据范围,知道算法时间复杂度必须小于m**2。题目说没有重边和自环,平时写code时候需要注意这两点。

2024-04-12 14:49:16 130

原创 853. 有边数限制的最短路+spfa (python)

当然可以简化步骤,可以用队列把更新的节点放在下一次nex队列里,因为不更新的节点下次同样不更新,更新的节点,下次可能到达某个子节点会更近,所以只把更新的节点加入下一次队列。先for循环m次,第一次,把1节点加入队列,弹出后,把更新过的节点加入nex里,qu中弹出所有节点后,让qu加载nex的节点。有了spfa的精髓,让复杂度最高为(mk),肯定比全部边都遍历一遍节省时间。加入1号的下一个节点后进行第二次。

2024-04-12 10:04:46 125

原创 4872. 最短路之和(python)

题目要求,求出任意两个点之间最小距离的和,那么想到Folyd算法,但是这个算法需要(n**3),并且题目询问n次,总共需要(n**4),那么想到一个一个删除点再求最小距离,相对于一个一个加点,再求最小和,跟Folyd算法流程不谋而合,例如前面有a,b点,先需要加上c点,那么这次把c当做路过的点,计算a到c再到b的距离,和原来a到b的距离进行比较。如果这时候又加上了d点,重复上述流程,把d点当做路过的点,计算a到d再到b,a到d再到c......。少了从a,b经过c再到d,和d经过c再到a,b。

2024-04-11 15:31:36 114

原创 最短路算法回顾1:Dijkstra(python)

【代码】最短路算法回顾1:Dijkstra(python)

2024-04-11 11:28:44 115

原创 飞机降落(python)

【代码】飞机降落(python)

2024-04-09 19:41:37 205

原创 4964. 子矩阵(python)

维护最大值,最小值窗口,特别需要注意,当遍历到第i个元素时,查看栈顶元素是否等于第i-b个元素,此元素不在边长为b的滑动窗口中。想到滑动窗口维护最大值或者最小值,但它是二维矩阵,可以先对每一行滑动维护一个大小为b的窗口,再对每一列维护一个大小为a的窗口。考虑前缀和,max和min维护一个表,也不能求出某个矩阵的最大值,最小值。首先看题目范围,如果暴力解,大概是四个for循环,显然不太ok。

2024-04-09 18:15:59 160

原创 货车运输(python)

询问x到y的最大载重,意思为从x到y开车,这条路径需要在所有从x到y的路径中的最小值,让最小值最大,考虑生成最大树,从已知相连接的两点之间,只选择路径最大的那条,生成一棵树,那么从x到y,就算绕路走,也走最大的那唯一的一条路。生成最大树后,如果查询q次最大承载力,暴力的算法可能复杂度达到qn,所以使用LCA优化寻找速度,例如查(1,2**10+2)的最大承载力,可以先查(1,2**10)再查(2**10,2**10+2)。(m为边的数量,n为点的数量),不知道为啥这题选kru?

2024-04-08 15:59:25 137

原创 异或和之差(python)

看见题目范围,可知暴力解法不行,本代码还有待改进(没过200000)建立字典树,不是字典建立的,使用的是列表。

2024-04-07 14:46:31 225

原创 121. 赶牛入圈

【代码】121. 赶牛入圈。

2024-04-04 16:57:05 124

原创 背包问题求具体方案(python)

背包问题

2023-11-02 16:22:28 123

原创 生成多个颜色不同的箱线图

首先,我们需要导入所需的库:Matplotlib 和 NumPy。# 设置每个箱线图的线条颜色和样式# 设置中位数线的颜色和样式# 设置横线的颜色和样式# 设置异常值的样式和颜色在这些代码中,我们使用循环来为每个箱线图的不同部分设置样式。我们通过遍历boxplots字典中的不同键(如'boxes''medians''whiskers'和'caps')来访问相应的线条对象,并使用set方法设置它们的颜色、线宽和样式。

2023-06-16 16:24:54 1376

原创 矩阵的二范数,已知A的二范,求cA的二范;c为常数

矩阵的二范

2022-09-19 16:10:12 340

原创 matlab.^的高级用法(数的矩阵次方)

则c=a.^[0,1,2,3,4]

2022-07-20 20:46:26 1897

原创 暗通道先验去雾Single Image Haze Removal Using Dark Channel Prior

MATLAB代码

2022-06-29 10:17:22 344

原创 青蛙跳台阶(函数递归)

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法分析:在跳上n阶之前,要么在第n-1阶,要么在第n-2阶。所以第n阶的跳法=第n-1阶+第n-2阶的跳法#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int wow(int x){ if (x >= 3) { return wow(x - 1) + wow(x - 2); } else if (x == 1) r

2022-05-06 16:26:53 167

原创 函数递归的使用

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>//目的是打印输入的数字(每个数字直接带空格),列如123,打印1 2 3void print(unsigned int x){ if (x > 9) { print(x / 10);//函数递归:1 递归需要限制条件 } // 2 每次递归都需要更加接近限制条件 printf("%d ", x%10);}int .

2022-05-04 10:36:51 47

原创 用函数交换a与b的值

需要交换a与b的地址(如果单纯交换两个数值,函数会新创建两个数值,并且交换,与原来数值无关)

2022-04-29 10:33:32 2534 1

原创 三个数按从大到小排序和公约数

待优化

2022-04-27 09:42:25 78

原创 猜数字的小游戏

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include<stdlib.h>#include<time.h>void menu(){ printf("*********************\n"); printf("******1:开始游戏*****\n"); printf("******0:退出游戏*****\n"); printf("*********************\n").

2022-04-14 15:32:34 2544

原创 登录密码界面

三次登录中密码正确显示登录成功,三次错误则退出

2022-04-14 10:26:01 121

原创 演示多个字符从两端向中间汇集

#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <windows.h>#include<string.h>int main(){ char arr1[] = "welcome to school!!!"; char arr2[] = "********************"; int left = 0; int right = strlen(arr2) - 1; while .

2022-04-14 10:04:13 51

原创 从一组数列中找出一个数的下标

可能要到此为止了

2022-04-13 15:49:20 157

原创 1.for的使用。2.do while的使用。3阶乘

1#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ for (int i = 1; i <= 10; i++)//第一个为初始,第二个为判定,第三个为变化 printf("%d ", i); return 0;}2.#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){ int a = 1;

2022-04-10 20:16:00 251

空空如也

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

TA关注的人

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