mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2026-02-02 18:39:09 +08:00
更新图床
This commit is contained in:
@@ -29,7 +29,7 @@ dp[1] = max(nums[0], nums[1]);
|
||||
|
||||
以示例二,输入[2,7,9,3,1]为例。
|
||||
|
||||

|
||||

|
||||
|
||||
红框dp[nums.size() - 1]为结果。
|
||||
|
||||
@@ -41,15 +41,15 @@ dp[1] = max(nums[0], nums[1]);
|
||||
|
||||
* 情况一:考虑不包含首尾元素
|
||||
|
||||

|
||||

|
||||
|
||||
* 情况二:考虑包含首元素,不包含尾元素
|
||||
|
||||

|
||||

|
||||
|
||||
* 情况三:考虑包含尾元素,不包含首元素
|
||||
|
||||

|
||||

|
||||
|
||||
需要注意的是,**“考虑” 不等于 “偷”**,例如情况三,虽然是考虑包含尾元素,但不一定要选尾部元素!对于情况三,取nums[1] 和 nums[3]就是最大的。
|
||||
|
||||
@@ -135,9 +135,11 @@ dp数组含义:下标为0记录不偷该节点所得到的的最大金钱,
|
||||
2. 确定终止条件
|
||||
|
||||
在遍历的过程中,如果遇到空间点的话,很明显,无论偷还是不偷都是0,所以就返回
|
||||
|
||||
```
|
||||
if (cur == NULL) return vector<int>{0, 0};
|
||||
```
|
||||
|
||||
3. 确定遍历顺序
|
||||
|
||||
采用后序遍历,代码如下:
|
||||
@@ -175,7 +177,7 @@ return {val2, val1};
|
||||
|
||||
以示例1为例,dp数组状态如下:(**注意用后序遍历的方式推导**)
|
||||
|
||||

|
||||

|
||||
|
||||
**最后头结点就是 取下标0 和 下标1的最大值就是偷得的最大金钱**。
|
||||
|
||||
@@ -196,6 +198,7 @@ return {val2, val1};
|
||||
这里我给出了三种解法:
|
||||
|
||||
暴力解法代码:
|
||||
|
||||
```CPP
|
||||
class Solution {
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user