This commit is contained in:
programmercarl
2023-04-21 22:27:05 +08:00
parent dad45d599b
commit 7a41318056
5 changed files with 16 additions and 4 deletions

View File

@ -158,6 +158,19 @@ if (i > 0 && nums[i] == nums[i - 1] && used[i - 1] == true) {
所以我通过举[1,1,1]的例子,把这两个去重的逻辑分别抽象成树形结构,大家可以一目了然:为什么两种写法都可以以及哪一种效率更高!
这里可能大家又有疑惑,既然 `used[i - 1] == false`也行而`used[i - 1] == true`也行,那为什么还要写这个条件呢?
直接这样写 不就完事了?
```cpp
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
```
其实并不行,一定要加上 `used[i - 1] == false`或者`used[i - 1] == true`,因为 used[i - 1] 要一直是 true 或者一直是false 才可以,而不是 一会是true 一会又是false 所以这个条件要写上。
是不是豁然开朗了!!
## 其他语言版本

View File

@ -46,8 +46,8 @@
如图:
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230203105634.png)
![55.跳跃游戏](https://code-thinking-1253855093.file.myqcloud.com/pics/20201124154758229-20230310135019977.png)
i每次移动只能在cover的范围内移动每移动一个元素cover得到该元素数值新的覆盖范围的补充让i继续移动下去。

View File

@ -106,7 +106,6 @@ class Solution {
}
}
}
```
```java
// 版本2

View File

@ -17,7 +17,7 @@
示例:
给定如下二叉树,以及目标和 sum = 22
![112.路径总和1](https://img-blog.csdnimg.cn/20210203160355234.png)
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230407210247.png)
返回 true, 因为存在目标和为 22 的根节点到叶子节点的路径 5->4->11->2。

View File

@ -44,7 +44,7 @@
如图:
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230203105634.png)
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230405225628.png)
这个例子可以看出饼干9只有喂给胃口为7的小孩这样才是整体最优解并想不出反例那么就可以撸代码了。