mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 20:40:39 +08:00
Merge pull request #1963 from juguagua/leetcode-add-complexity-analysis-hashtable
添加复杂度分析:哈希表部分
This commit is contained in:
@ -109,6 +109,9 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n)
|
||||||
|
* 空间复杂度: O(n)
|
||||||
|
|
||||||
## 总结
|
## 总结
|
||||||
|
|
||||||
本题其实有四个重点:
|
本题其实有四个重点:
|
||||||
|
@ -83,6 +83,10 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n^2)
|
||||||
|
* 空间复杂度: O(n),额外的 set 开销
|
||||||
|
|
||||||
|
|
||||||
## 双指针
|
## 双指针
|
||||||
|
|
||||||
**其实这道题目使用哈希法并不十分合适**,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。
|
**其实这道题目使用哈希法并不十分合适**,因为在去重的操作中有很多细节需要注意,在面试中很难直接写出没有bug的代码。
|
||||||
@ -158,6 +162,10 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n^2)
|
||||||
|
* 空间复杂度: O(1)
|
||||||
|
|
||||||
|
|
||||||
## 去重逻辑的思考
|
## 去重逻辑的思考
|
||||||
|
|
||||||
### a的去重
|
### a的去重
|
||||||
|
@ -121,6 +121,10 @@ public:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n^3)
|
||||||
|
* 空间复杂度: O(1)
|
||||||
|
|
||||||
|
|
||||||
## 补充
|
## 补充
|
||||||
|
|
||||||
二级剪枝的部分:
|
二级剪枝的部分:
|
||||||
|
@ -75,6 +75,8 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(logn)
|
||||||
|
* 空间复杂度: O(logn)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -85,6 +85,9 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n)
|
||||||
|
* 空间复杂度: O(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 其他语言版本
|
## 其他语言版本
|
||||||
|
@ -72,6 +72,9 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(mn)
|
||||||
|
* 空间复杂度: O(n)
|
||||||
|
|
||||||
## 拓展
|
## 拓展
|
||||||
|
|
||||||
那有同学可能问了,遇到哈希问题我直接都用set不就得了,用什么数组啊。
|
那有同学可能问了,遇到哈希问题我直接都用set不就得了,用什么数组啊。
|
||||||
@ -110,6 +113,8 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(m + n)
|
||||||
|
* 空间复杂度: O(n)
|
||||||
|
|
||||||
## 其他语言版本
|
## 其他语言版本
|
||||||
|
|
||||||
|
@ -39,8 +39,6 @@ canConstruct("aa", "aab") -> true
|
|||||||
那么第一个思路其实就是暴力枚举了,两层for循环,不断去寻找,代码如下:
|
那么第一个思路其实就是暴力枚举了,两层for循环,不断去寻找,代码如下:
|
||||||
|
|
||||||
```CPP
|
```CPP
|
||||||
// 时间复杂度: O(n^2)
|
|
||||||
// 空间复杂度:O(1)
|
|
||||||
class Solution {
|
class Solution {
|
||||||
public:
|
public:
|
||||||
bool canConstruct(string ransomNote, string magazine) {
|
bool canConstruct(string ransomNote, string magazine) {
|
||||||
@ -62,6 +60,9 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n^2)
|
||||||
|
* 空间复杂度: O(1)
|
||||||
|
|
||||||
这里时间复杂度是比较高的,而且里面还有一个字符串删除也就是erase的操作,也是费时的,当然这段代码也可以过这道题。
|
这里时间复杂度是比较高的,而且里面还有一个字符串删除也就是erase的操作,也是费时的,当然这段代码也可以过这道题。
|
||||||
|
|
||||||
|
|
||||||
@ -78,8 +79,6 @@ public:
|
|||||||
代码如下:
|
代码如下:
|
||||||
|
|
||||||
```CPP
|
```CPP
|
||||||
// 时间复杂度: O(n)
|
|
||||||
// 空间复杂度:O(1)
|
|
||||||
class Solution {
|
class Solution {
|
||||||
public:
|
public:
|
||||||
bool canConstruct(string ransomNote, string magazine) {
|
bool canConstruct(string ransomNote, string magazine) {
|
||||||
@ -105,6 +104,10 @@ public:
|
|||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n)
|
||||||
|
* 空间复杂度: O(1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 其他语言版本
|
## 其他语言版本
|
||||||
|
@ -83,6 +83,9 @@ public:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
* 时间复杂度: O(n^2)
|
||||||
|
* 空间复杂度: O(n^2),最坏情况下A和B的值各不相同,相加产生的数字个数为 n^2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user