Skip to content

Commit 6259a0e

Browse files
remote $
1 parent 77aa72b commit 6259a0e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+210
-210
lines changed

problems/0005.最长回文子串.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
两层for循环,遍历区间起始位置和终止位置,然后判断这个区间是不是回文。
4040

41-
时间复杂度:$O(n^3)$
41+
时间复杂度:O(n^3)
4242

4343
## 动态规划
4444

@@ -205,8 +205,8 @@ public:
205205

206206
```
207207
208-
* 时间复杂度:$O(n^2)$
209-
* 空间复杂度:$O(n^2)$
208+
* 时间复杂度:O(n^2)
209+
* 空间复杂度:O(n^2)
210210
211211
## 双指针
212212
@@ -253,8 +253,8 @@ public:
253253
254254
```
255255

256-
* 时间复杂度:$O(n^2)$
257-
* 空间复杂度:$O(1)$
256+
* 时间复杂度:O(n^2)
257+
* 空间复杂度:O(1)
258258

259259

260260

problems/0027.移除元素.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
1313

14-
不要使用额外的数组空间,你必须仅使用 $O(1)$ 额外空间并**原地**修改输入数组。
14+
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并**原地**修改输入数组。
1515

1616
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。
1717

@@ -42,7 +42,7 @@
4242

4343
![27.移除元素-暴力解法](https://tva1.sinaimg.cn/large/008eGmZEly1gntrc7x9tjg30du09m1ky.gif)
4444

45-
很明显暴力解法的时间复杂度是$O(n^2)$,这道题目暴力解法在leetcode上是可以过的。
45+
很明显暴力解法的时间复杂度是O(n^2),这道题目暴力解法在leetcode上是可以过的。
4646

4747
代码如下:
4848

@@ -68,8 +68,8 @@ public:
6868
};
6969
```
7070

71-
* 时间复杂度:$O(n^2)$
72-
* 空间复杂度:$O(1)$
71+
* 时间复杂度:O(n^2)
72+
* 空间复杂度:O(1)
7373

7474
### 双指针法
7575

@@ -101,16 +101,16 @@ public:
101101
```
102102
注意这些实现方法并没有改变元素的相对位置!
103103
104-
* 时间复杂度:$O(n)$
105-
* 空间复杂度:$O(1)$
104+
* 时间复杂度:O(n)
105+
* 空间复杂度:O(1)
106106
107107
旧文链接:[数组:就移除个元素很难么?](https://programmercarl.com/0027.移除元素.html)
108108
109109
```CPP
110110
/**
111111
* 相向双指针方法,基于元素顺序可以改变的题目描述改变了元素相对位置,确保了移动最少元素
112-
* 时间复杂度:$O(n)$
113-
* 空间复杂度:$O(1)$
112+
* 时间复杂度:O(n)
113+
* 空间复杂度:O(1)
114114
*/
115115
class Solution {
116116
public:

problems/0028.实现strStr.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,9 +229,9 @@ next数组就可以是前缀表,但是很多实现都是把前缀表统一减
229229

230230
# 时间复杂度分析
231231

232-
其中n为文本串长度,m为模式串长度,因为在匹配的过程中,根据前缀表不断调整匹配的位置,可以看出匹配的过程是$O(n)$,之前还要单独生成next数组,时间复杂度是$O(m)$。所以整个KMP算法的时间复杂度是$O(n+m)$的。
232+
其中n为文本串长度,m为模式串长度,因为在匹配的过程中,根据前缀表不断调整匹配的位置,可以看出匹配的过程是O(n),之前还要单独生成next数组,时间复杂度是O(m)。所以整个KMP算法的时间复杂度是O(n+m)的。
233233

234-
暴力的解法显而易见是$O(n × m)$,所以**KMP在字符串匹配中极大的提高的搜索的效率。**
234+
暴力的解法显而易见是O(n × m),所以**KMP在字符串匹配中极大的提高的搜索的效率。**
235235

236236
为了和力扣题目28.实现strStr保持一致,方便大家理解,以下文章统称haystack为文本串, needle为模式串。
237237

problems/0042.接雨水.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ public:
129129
};
130130
```
131131

132-
因为每次遍历列的时候,还要向两边寻找最高的列,所以时间复杂度为$O(n^2)$
133-
空间复杂度为$O(1)$
132+
因为每次遍历列的时候,还要向两边寻找最高的列,所以时间复杂度为O(n^2)。
133+
空间复杂度为O(1)。
134134

135135

136136

@@ -779,8 +779,8 @@ int trap(int* height, int heightSize) {
779779
}
780780
```
781781
782-
* 时间复杂度 $O(n)$
783-
* 空间复杂度 $O(1)$
782+
* 时间复杂度 O(n)
783+
* 空间复杂度 O(1)
784784
785785
786786
-----------------------

problems/0053.最大子序和.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@
2121

2222
暴力解法的思路,第一层for 就是设置起始位置,第二层for循环遍历数组寻找最大值
2323

24-
* 时间复杂度:$O(n^2)$
25-
* 空间复杂度:$O(1)$
24+
* 时间复杂度:O(n^2)
25+
* 空间复杂度:O(1)
2626

2727
```CPP
2828
class Solution {
@@ -98,8 +98,8 @@ public:
9898
};
9999
```
100100

101-
* 时间复杂度:$O(n)$
102-
* 空间复杂度:$O(1)$
101+
* 时间复杂度:O(n)
102+
* 空间复杂度:O(1)
103103

104104
当然题目没有说如果数组为空,应该返回什么,所以数组为空的话返回啥都可以了。
105105

@@ -128,8 +128,8 @@ public:
128128
};
129129
```
130130
131-
* 时间复杂度:$O(n)$
132-
* 空间复杂度:$O(n)$
131+
* 时间复杂度:O(n)
132+
* 空间复杂度:O(n)
133133
134134
## 总结
135135

problems/0053.最大子序和(动态规划).md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ public:
8080
};
8181
```
8282
83-
* 时间复杂度:$O(n)$
84-
* 空间复杂度:$O(n)$
83+
* 时间复杂度:O(n)
84+
* 空间复杂度:O(n)
8585
8686
8787
## 总结

problems/0062.不同路径.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public:
8080
8181
那二叉树的节点个数就是 2^(m + n - 1) - 1。可以理解深搜的算法就是遍历了整个满二叉树(其实没有遍历整个满二叉树,只是近似而已)
8282
83-
所以上面深搜代码的时间复杂度为$O(2^{m + n - 1} - 1)$,可以看出,这是指数级别的时间复杂度,是非常大的。
83+
所以上面深搜代码的时间复杂度为O(2^(m + n - 1) - 1),可以看出,这是指数级别的时间复杂度,是非常大的。
8484
8585
### 动态规划
8686
@@ -143,8 +143,8 @@ public:
143143
};
144144
```
145145

146-
* 时间复杂度:$O(m × n)$
147-
* 空间复杂度:$O(m × n)$
146+
* 时间复杂度:O(m × n)
147+
* 空间复杂度:O(m × n)
148148

149149
其实用一个一维数组(也可以理解是滚动数组)就可以了,但是不利于理解,可以优化点空间,建议先理解了二维,在理解一维,C++代码如下:
150150

@@ -164,8 +164,8 @@ public:
164164
};
165165
```
166166
167-
* 时间复杂度:$O(m × n)$
168-
* 空间复杂度:$O(n)$
167+
* 时间复杂度:O(m × n)
168+
* 空间复杂度:O(n)
169169
170170
### 数论方法
171171
@@ -224,8 +224,8 @@ public:
224224
};
225225
```
226226
227-
* 时间复杂度:$O(m)$
228-
* 空间复杂度:$O(1)$
227+
* 时间复杂度:O(m)
228+
* 空间复杂度:O(1)
229229
230230
**计算组合问题的代码还是有难度的,特别是处理溢出的情况!**
231231

problems/0063.不同路径II.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ public:
152152
};
153153
```
154154
155-
* 时间复杂度:$O(n × m)$,n、m 分别为obstacleGrid 长度和宽度
156-
* 空间复杂度:$O(n × m)$
155+
* 时间复杂度:O(n × m),n、m 分别为obstacleGrid 长度和宽度
156+
* 空间复杂度:O(n × m)
157157
158158
## 总结
159159

problems/0122.买卖股票的最佳时机II(动态规划).md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ public:
8888
};
8989
```
9090
91-
* 时间复杂度:$O(n)$
92-
* 空间复杂度:$O(n)$
91+
* 时间复杂度:O(n)
92+
* 空间复杂度:O(n)
9393
9494
大家可以本题和[121. 买卖股票的最佳时机](https://programmercarl.com/0121.买卖股票的最佳时机.html)的代码几乎一样,唯一的区别在:
9595
@@ -121,8 +121,8 @@ public:
121121
};
122122
```
123123

124-
* 时间复杂度:$O(n)$
125-
* 空间复杂度:$O(1)$
124+
* 时间复杂度:O(n)
125+
* 空间复杂度:O(1)
126126

127127

128128

problems/0139.单词拆分.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ public:
6666
};
6767
```
6868
69-
* 时间复杂度:$O(2^n)$,因为每一个单词都有两个状态,切割和不切割
70-
* 空间复杂度:$O(n)$,算法递归系统调用栈的空间
69+
* 时间复杂度:O(2^n),因为每一个单词都有两个状态,切割和不切割
70+
* 空间复杂度:O(n),算法递归系统调用栈的空间
7171
7272
那么以上代码很明显要超时了,超时的数据如下:
7373
@@ -114,7 +114,7 @@ public:
114114
};
115115
```
116116
117-
这个时间复杂度其实也是:$O(2^n)$。只不过对于上面那个超时测试用例优化效果特别明显。
117+
这个时间复杂度其实也是:O(2^n)。只不过对于上面那个超时测试用例优化效果特别明显。
118118
119119
**这个代码就可以AC了,当然回溯算法不是本题的主菜,背包才是!**
120120
@@ -207,8 +207,8 @@ public:
207207
};
208208
```
209209

210-
* 时间复杂度:$O(n^3)$,因为substr返回子串的副本是$O(n)$的复杂度(这里的n是substring的长度)
211-
* 空间复杂度:$O(n)$
210+
* 时间复杂度:O(n^3),因为substr返回子串的副本是$O(n)$的复杂度(这里的n是substring的长度)
211+
* 空间复杂度:O(n)
212212

213213

214214
## 总结

0 commit comments

Comments
 (0)