自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 收藏
  • 关注

原创 划分为k个相等的子集

若是dfs已经返回了一个true那么已经找到一种情况满足了划分要求,因为这里只需要返回结果,所以没必要继续dfs了直接返回true即可,否则的话继续找数组中的下一个元素进行dfs。②dp[s] == false: 这里进行判断以为这这个选择情况已经被dfs过了,已经被dfs过但是却没有成功划分,那么证明这个状态已经是失败的所以直接返回false;中状态因为利用了记忆化搜索,所以每种状态一定只会dfs一次,每个状态的dfs最坏情况下都会遍历一遍数组,所以整体的时间复杂度为O(n *

2024-08-27 00:14:06 665

原创 LeetCode:反转区间内的链表

时间复杂度:O(N),这里找四个节点的位置,和反转链表都是O(N)级别,所以时间复杂度就是O(N)级别。时间复杂度:O(N), 最坏情况下也只会遍历一次,比方法一的时间复杂度更优。空间复杂度:O(1),这里在原地进行反转,只使用了额外的四个指针变量。这里的思路简单来说就是:对于反转的区间通过头插的方式进行反转。Step1:当前节点的next指向next节点的next。Step3:pre节点的next指向next节点。Step2:next节点的next指向当前节点。Step2:将分离出的链表进行反转。

2024-08-24 20:55:10 339

原创 带你学会Git必会操作

我们发现这里的merge的模式好像不是fast-forward模式:因为之前我们的合并如果是fast-forward模式的话,合并成功之后会有fast-forward的提示,那么其实这里git默认给我们采用了no-ff,也就是非fast-forward模式,这两种模式有什么区别呢?首先,其实不管是暂存区还是对应的分支,其实内部都是维护了对应的索引而不是文件/对象。代表要拉取的远程的master分支,冒号后面代表要拉取到本地的分支,当本地分支名和远程分支名一致的时候可以省略掉本地分支名。

2024-07-28 23:32:30 823 1

原创 牛客热题:最长回文子串

表示以A[i],A[j]为头尾的字符串是否是回文字符串的状态。循环内部会直接对长度为1的区间直接修改为状态为true。,首先枚举从0到n - 1 的长度的字符串。,利用了额外的dp数组,来存储对应的状态。内部:i,也就是起始位置从左到右即可。最外层:字符串的长度从短到长。为真的话就更新当前的。

2024-06-17 21:30:21 1181

原创 牛客热题:最长上升子序列(一)

对于所有的初始状态,都应该设置为1,因为对于以每一个位置结尾的最长上升子序列的长度最小为1。空间复杂度:O(N), 额外使用了一个和原数组长度相同的dp数组。, 双层循遍历数组的同时,遍历当前节点之前的所有节点。外层循环,从左到右,内部循环,均可。为结尾的最长上升子序列的长度。

2024-06-16 21:36:47 779

原创 牛客热题:兑换零钱(一)

使用递归方法和动态规划思想,通过dp数组记录中间结果,避免重复计算,提高效率。递归函数中每次选择一个硬币面值,尝试组合达到目标金额,找出最少的硬币数量。如果某个金额已经计算过,直接返回已存储的结果,避免重复计算,提高效率。

2024-06-15 18:08:01 1039

原创 牛客热题:把数字翻译成字符串

step1:先将原矩阵沿着对角线进行交换元素(注意这里第二个内部循环的上界是i,如果为n的话,相当于交换过来的元素,又交换过去了,相当于没交换)step3:遍历数组的同时,将原数组中的元素,转换坐标后放入到旋转之后的数组内部。空间复杂度:O(1), 没有借助额外的空间实现了旋转矩阵。spep2:将每一行的在本行内进行旋转就可以得到结果了。,利用了额外的数组空间来存储答案。,相当于遍历整个矩阵的时间复杂度。step1:创建额外的数组空间。step2:遍历原数组。

2024-06-12 18:27:05 777

原创 牛客热题:旋转矩阵

step1:先将原矩阵沿着对角线进行交换元素(注意这里第二个内部循环的上界是i,如果为n的话,相当于交换过来的元素,又交换过去了,相当于没交换)step3:遍历数组的同时,将原数组中的元素,转换坐标后放入到旋转之后的数组内部。空间复杂度:O(1), 没有借助额外的空间实现了旋转矩阵。spep2:将每一行的在本行内进行旋转就可以得到结果了。,利用了额外的数组空间来存储答案。,相当于遍历整个矩阵的时间复杂度。step1:创建额外的数组空间。step2:遍历原数组。

2024-06-12 14:11:24 279

原创 牛客热题:旋转数组

我们先实现移动一次的方式,然后调用m次的这样的方式即可。空间复杂度:O(1), 只用了一个额外的temp变量。step1:先将对应的m进行取模,因为m可能会大于n。利用了三次旋转,每次旋转的时间复杂度是O(N)空间复杂度:O(1), 没有使用额外的变量。step4:将后n - m个进行反转。step2:将整个数组进行反转。step3:将前m个进行反转。

2024-06-12 13:11:07 798

原创 牛客热题:设计LRU缓存结构

​ step5: 如果溢出就删除对应的链表尾部的节点,然后将哈希中的映射删除掉,并释放掉对应的节点。​ step3:如果没有set过就构建一个新的节点在哈希中创建映射,然后将新的节点插入到链表的头部。​ step2:如果set过就将对应的节点移动到链表头,并且在哈希中改变其val的值。​ step2:如果出现过,将其在链表中的节点移动到链表头的位置,并返回对应的val。空间复杂度:O(N), 利用到了长度等于size+2的链表长度和对应的map。​ step1:查看对应的key是否已经被set过。

2024-06-11 23:21:50 736

原创 牛客热题:矩阵的最小路径和

​ 首先我们发现遍历dp数组的时候,只会利用到dp数组的左上位置的信息。所以我们可以将dp数组缩减为一维数组的形式,重复利用这部分空间。其中的数据并不是我们想要的。所以我们进行了反向填写的操作。, 我们优化了空间,使用了长度等于第二个字符串的dp数组。的做法之前的j的正向遍历悠久导致。的时间复杂度应该是O(N);的时间复杂度应该是O(N);相当于遍历了一遍二维数组。使用了一个二维的dp数组。相当于遍历了一遍二维数组。

2024-06-10 13:52:34 1177 1

原创 牛客热题:不同的路径数目(一)

​ 首先我们发现遍历dp数组的时候,只会利用到dp数组的左上位置的信息。所以我们可以将dp数组缩减为一维数组的形式,重复利用这部分空间。其中的数据并不是我们想要的。所以我们进行了反向填写的操作。, 我们优化了空间,使用了长度等于第二个字符串的dp数组。的做法之前的j的正向遍历悠久导致。的时间复杂度应该是O(N);的时间复杂度应该是O(N);相当于遍历了一遍二维数组。使用了一个二维的dp数组。相当于遍历了一遍二维数组。

2024-06-10 13:32:56 664

原创 牛客热题:最长公共子串

​ 首先我们发现遍历dp数组的时候,只会利用到dp数组的左上位置的信息。所以我们可以将dp数组缩减为一维数组的形式,重复利用这部分空间。其中的数据并不是我们想要的。所以我们进行了反向填写的操作。, 我们优化了空间,使用了长度等于第二个字符串的dp数组。的做法之前的j的正向遍历悠久导致。的时间复杂度应该是O(N);的时间复杂度应该是O(N);相当于遍历了一遍二维数组。使用了一个二维的dp数组。相当于遍历了一遍二维数组。

2024-06-09 16:31:07 1063

原创 牛客热题:最长公共子序列Ⅱ

②根据长度去寻找对应的字符串。①先求出最长子序列的长度。

2024-06-09 14:21:24 1070

原创 牛客热题:矩阵最长递增路径

​ dfs的时间复杂度为O(m * n), 主函数调用了m * n次,所以总体的时间复杂度是O(​ 对于每个(x, y)来说,遍历它上下左右四个坐标,查看是否越界或者满足递增的要求;创建了一个和原矩阵空间大小相同的矩阵用于判断当前的左边是否被递归过,以及一些变量。创建了一个和原矩阵同等空间的dp数组,则空间复杂度为O(n * m)​ 所以总体上来说空间复杂度:O(n * m);​ 相当于遍历一遍对应的矩阵O(n * m)​ 若是满足要求就继续递归满足要求的点。: 两重循环遍历矩阵中所有的点。

2024-06-05 14:26:00 1065

原创 牛客热题:字符串的全排列

时间复杂度: O(n!空间复杂度: O(n⋅n!

2024-06-04 19:33:17 962

原创 牛客热题:岛屿数量

岛屿数量_牛客题霸_牛客网 (nowcoder.com)

2024-06-04 18:22:34 822

原创 牛客热题:没有重复数字的全排列

因为结果存储占用的空间是主要部分。生成排列的总时间复杂度为。综合考虑,空间复杂度为。

2024-06-03 12:20:02 550

原创 牛客热题:缺失的第一个正整数

这段代码是用来找出一个数组中只出现一次的两个数字的。它的思路是利用异或操作找出数组中所有数字的异或结果,异或结果中为1的最低位,根据这个最低位将数组分为两组,分别进行异或操作,得到的结果就是这两个只出现一次的数字。除了存放结果的数组res外,只使用了几个常量级别的变量,所以空间复杂度为O(1)。step2:遍历哈希表,然后将其中只出现一次的插入到答案数组中即可。空间复杂度:O(N) , 利用了额外的空间,哈希表。时间复杂度:O(N) , 相当于遍历了两次数组。

2024-06-02 19:59:06 798

原创 牛客热题:数组中出现一次的两个数字

这段代码是用来找出一个数组中只出现一次的两个数字的。它的思路是利用异或操作找出数组中所有数字的异或结果,异或结果中为1的最低位,根据这个最低位将数组分为两组,分别进行异或操作,得到的结果就是这两个只出现一次的数字。除了存放结果的数组res外,只使用了几个常量级别的变量,所以空间复杂度为O(1)。step2:遍历哈希表,然后将其中只出现一次的插入到答案数组中即可。空间复杂度:O(N) , 利用了额外的空间,哈希表。时间复杂度:O(N) , 相当于遍历了两次数组。

2024-06-02 18:05:03 410

原创 PHP&Mysql用户邮箱注册实例

我们来创建一个简单的Web应用程序,使用HTML作为前端,MySQL作为后端数据库。我们将创建一个用于用户注册的应用程序,其中用户可以输入他们的名字和电子邮件,然后将这些信息存储在MySQL数据库中。

2024-05-30 22:03:21 752

原创 牛客热题:数据流中的中位数

,因为每次插入都需要在前面的元素中遍历找到对应的位置,所以每个元素的插入的时间复杂度是O(N),因此时间复杂度为O(中位数是指:有序数组中中间的那个数。, 说明,中位数是左边数据结构的最大值与右边数据结构的最小值的平均值。median-1]的数据,并且可以。返回最大值的,其实就是大根堆。然后,我们把[median]即中位数,随便放到哪个都可以。, 说明,中位数是左边数据结构的最大值。, 说明,中位数是右边数据结构的最小值。相对应的,如果我有个数据结构可以保留。返回最小值的,其实就是小根堆,

2024-05-29 20:36:25 839

原创 牛客热题:最小的k个数

step2:堆顶的元素大于当前遍历的元素,那么就将堆顶pop,然后将当前元素入堆。), 插入容量为k的大根堆时间复杂度为O(longk), 一共遍历n个元素。step1:堆中不够k个元素就向堆中插入数据。空间复杂度:O(K), 容量为K的优先队列。空间复杂度:O(N), 答案数组的长度。最后将堆中的元素全部放入到答案数组。) , sort的时间复杂度。堆顶的元素为堆中最大的元素。

2024-05-27 12:33:13 854

原创 牛客热题:寻找第K大

时间复杂度: O(nlognnlog nnlogn空间复杂度: O(nnn这是因为sort函数在最坏情况下需要线性的额外空间,同时进行排序的平均时间复杂度为 O(nlognn log nnlogn。

2024-05-27 12:31:57 835

原创 牛客热题:滑动窗口的最大值

空间复杂度:O(N),其中开辟了N - size大小的答案数组,和最大为size长度的双端队列。空间复杂度:O(N), 使用了一个N - size长度的数组用来返回答案。时间复杂度:O(N * M) ,其中N是数组的长度,M为size的大小。时间复杂度:O(N), 遍历了一遍数组,求出了所有滑动窗口的最大值。

2024-05-26 15:22:37 448

原创 牛客热题:有效括号

时间复杂度:O(1), 所有的请求均以O(1)的方式实现。​ 判断当前的值和s2的栈顶的数据比较,维护一个单调栈,用于实现常数级的min查询。空间复杂度:O(N), 使用了两个栈空间。​ 如果该值小就将其同时入栈给两个栈。,而第二个栈将自己的栈顶数据重入一遍。​ 否则,只入栈给第一个栈。​ 两个栈同时出栈即可。思路来自牛客大佬题解。

2024-05-26 14:07:23 171

原创 牛客热题:包含min函数的栈

时间复杂度:O(1), 所有的请求均以O(1)的方式实现。​ 判断当前的值和s2的栈顶的数据比较,维护一个单调栈,用于实现常数级的min查询。空间复杂度:O(N), 使用了两个栈空间。​ 如果该值小就将其同时入栈给两个栈。,而第二个栈将自己的栈顶数据重入一遍。​ 否则,只入栈给第一个栈。​ 两个栈同时出栈即可。思路来自牛客大佬题解。

2024-05-20 13:53:18 722

原创 牛客热题:用两个栈实现队列

时间复杂度:O(N) , 每次push的时间复杂度是O(1), 但是pop的时候,因为存在需要将其中的栈的数据搬运到另一个栈所以需要O(N)的复杂度,其中N是对应的搬运的数据的个数。空间复杂度:O(1), 除了题目给出的栈以外,只使用了常数个额外的变量空间。

2024-05-20 13:16:49 279

原创 牛客热题:二叉搜索树的最近公共祖先

空间复杂度:主要取决于递归调用的深度,即函数调用栈的使用情况。在最坏情况下,如果二叉搜索树是一个不平衡的树,递归调用可能达到树的高度。因此,空间复杂度为 O(h),其中 h 是树的高度。时间复杂度:这段代码的时间复杂度取决于树的高度,即 O(h),其中 h 是树的高度。

2024-05-19 13:51:03 327

原创 牛客热题:在二叉树中找到两个最近公共祖先

这段代码主要是用来判断一棵二叉树是否是平衡二叉树的。空间复杂度: O(n),因为需要递归调用的栈空间。时间复杂度:O(n)

2024-05-19 13:50:14 364

原创 牛客热题:判断是否是平衡二叉树

这段代码主要是用来判断一棵二叉树是否是平衡二叉树的。空间复杂度: O(n),因为需要递归调用的栈空间。时间复杂度:O(n)

2024-05-18 12:16:49 637

原创 牛客热题:判断二叉树是不是搜索二叉树

空间复杂度:O(M),申请了一个队列空间,该队列的最大空间为二叉树的最后一层的节点数。时间复杂度:O(N), 遍历了一遍二叉树。

2024-05-17 12:03:01 459

原创 牛客热题:判断是否是完全二叉树

空间复杂度:O(M),申请了一个队列空间,该队列的最大空间为二叉树的最后一层的节点数。时间复杂度:O(N), 遍历了一遍二叉树。

2024-05-17 12:01:53 387 1

原创 牛客热题:镜像二叉树

空间复杂度:O(N),没有额外开变量,但是递归调用的函数栈帧的个数和二叉树的节点数相同。时间复杂度:O(N) , 遍历一遍二叉树。

2024-05-16 13:22:50 408

原创 牛客热题:合并二叉树

空间复杂度:O(N)。没有申请新的空间,但是递归调用栈占用了N的空间。时间复杂度:O(N),等于中序遍历的时间复杂度。

2024-05-16 13:06:06 299

原创 牛客热题:二叉树与双向链表

空间复杂度:O(N)。没有申请新的空间,但是递归调用栈占用了N的空间。时间复杂度:O(N),等于中序遍历的时间复杂度。

2024-05-15 12:15:32 748

原创 牛客热题:二叉树的最大深度

这样通过递归的方式,从根节点开始逐层向下计算深度,直到叶子节点为止,最终得到整棵树的最大深度。对于空间复杂度,在最坏情况下,递归调用会将所有节点压入调用栈,导致空间复杂度为 O(N)。这段代码使用了广度优先搜索(BFS)的思路来计算二叉树的最大深度。综上所述,这段代码的时间复杂度为 O(N),空间复杂度为 O(W)。时间复杂度:O(N)空间复杂度:O(W)

2024-05-15 11:12:09 598

原创 牛客热题:二叉树的后序遍历

空间复杂度:O(N), 创建了一个和二叉树节点数相等的数组,用来返回对应的答案。空间复杂度:O(N), 使用了额外的栈空间。时间复杂度:O(N) ,遍历了一遍二叉树。时间复杂度:O(N),遍历了一遍二叉树。

2024-05-14 14:40:24 308

原创 牛客热题:二叉树的中序遍历

空间复杂度:O(N) , 使用了一个和二叉树节点数相同的数组。时间复杂度:O(N) ,遍历了一遍对应的二叉树。空间复杂度:O(N), 答案数组和对应栈空间。时间复杂度:O(N) ,遍历了一遍二叉树。

2024-05-14 14:00:29 487

原创 牛客热题:二叉树的前序遍历

空间复杂度:O(N),使用了和二叉树的节点数相同的答案数组和对应的栈空间。空间复杂度:O(N) , 使用了一个和二叉树节点数相同的数组。时间复杂度:O(N) ,遍历了一遍二叉树。时间复杂度:O(N),遍历了一遍二叉树。

2024-05-14 13:36:50 356

空空如也

空空如也

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

TA关注的人

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