Merge branch 'youngyangyang04:master' into master

This commit is contained in:
zb-Chen
2023-03-14 15:41:52 +08:00
committed by GitHub
6 changed files with 25 additions and 1 deletions

View File

@ -87,6 +87,9 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(1)
## 其他语言版本

View File

@ -145,6 +145,9 @@ public:
};
```
* 时间复杂度: O(n)快慢指针相遇前指针走的次数小于链表长度快慢指针相遇后两个index指针走的次数也小于链表长度总体为走的次数小于 2n
* 空间复杂度: O(1)
## 补充
在推理过程中,大家可能有一个疑问就是:**为什么第一次在环中相遇slow的 步数 是 x+y 而不是 x + 若干环的长度 + y 呢?**

View File

@ -118,6 +118,9 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(1)
**设置一个虚拟头结点在进行移除节点操作:**
```CPP
@ -144,6 +147,9 @@ public:
```
* 时间复杂度: O(n)
* 空间复杂度: O(1)

View File

@ -68,6 +68,9 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(1)
## 递归法
递归法相对抽象一些但是其实和双指针法是一样的逻辑同样是当cur为空的时候循环结束不断将cur指向pre的过程。
@ -97,6 +100,9 @@ public:
};
```
* 时间复杂度: O(n), 要递归处理链表的每个节点
* 空间复杂度: O(n), 递归调用了 n 层栈空间
我们可以发现,上面的递归写法和双指针法实质上都是从前往后翻转指针指向,其实还有另外一种与双指针法不同思路的递归写法:从后往前翻转指针指向。
具体代码如下(带详细注释):
@ -120,6 +126,9 @@ public:
};
```
* 时间复杂度: O(n)
* 空间复杂度: O(n)
## 其他语言版本

View File

@ -167,7 +167,7 @@ dp[j] 表示填满j包括j这么大容积的包有dp[j]种方法
有哪些来源可以推出dp[j]呢?
只要搞到nums[i]凑成dp[j]就有dp[j - nums[i]] 种方法。
只要搞到nums[i]凑成dp[j]就有dp[j - nums[i]] 种方法。
例如dp[j]j 为5

View File

@ -152,6 +152,9 @@ private:
};
```
* 时间复杂度: 涉及 `index` 的相关操作为 O(index), 其余为 O(1)
* 空间复杂度: O(n)
## 其他语言版本