修改错别字“下表”->“下标”

Signed-off-by: bqlin <bqlins@163.com>
This commit is contained in:
bqlin
2021-12-10 13:45:56 +08:00
parent 94e5dea6f0
commit e12257efc7
23 changed files with 52 additions and 52 deletions

View File

@@ -63,7 +63,7 @@ if (nums.size() == 1) {
这里有三步工作
1. 先要找到数组中最大的值和对应的下 最大的值构造根节点,下用来下一步分割数组。
1. 先要找到数组中最大的值和对应的下 最大的值构造根节点,下用来下一步分割数组。
代码如下:
```CPP
@@ -79,7 +79,7 @@ TreeNode* node = new TreeNode(0);
node->val = maxValue;
```
2. 最大值所在的下左区间 构造左子树
2. 最大值所在的下左区间 构造左子树
这里要判断maxValueIndex > 0因为要保证左区间至少有一个数值。
@@ -91,7 +91,7 @@ if (maxValueIndex > 0) {
}
```
3. 最大值所在的下右区间 构造右子树
3. 最大值所在的下右区间 构造右子树
判断maxValueIndex < (nums.size() - 1),确保右区间至少有一个数值。
@@ -114,7 +114,7 @@ public:
node->val = nums[0];
return node;
}
// 找到数组中最大的值和对应的下
// 找到数组中最大的值和对应的下
int maxValue = 0;
int maxValueIndex = 0;
for (int i = 0; i < nums.size(); i++) {
@@ -124,12 +124,12 @@ public:
}
}
node->val = maxValue;
// 最大值所在的下左区间 构造左子树
// 最大值所在的下左区间 构造左子树
if (maxValueIndex > 0) {
vector<int> newVec(nums.begin(), nums.begin() + maxValueIndex);
node->left = constructMaximumBinaryTree(newVec);
}
// 最大值所在的下右区间 构造右子树
// 最大值所在的下右区间 构造右子树
if (maxValueIndex < (nums.size() - 1)) {
vector<int> newVec(nums.begin() + maxValueIndex + 1, nums.end());
node->right = constructMaximumBinaryTree(newVec);
@@ -141,7 +141,7 @@ public:
以上代码比较冗余效率也不高每次还要切割的时候每次都要定义新的vector也就是数组但逻辑比较清晰。
和文章[二叉树:构造二叉树登场!](https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html)中一样的优化思路,就是每次分隔不用定义新的数组,而是通过下索引直接在原数组上操作。
和文章[二叉树:构造二叉树登场!](https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html)中一样的优化思路,就是每次分隔不用定义新的数组,而是通过下索引直接在原数组上操作。
优化后代码如下:
@@ -152,7 +152,7 @@ private:
TreeNode* traversal(vector<int>& nums, int left, int right) {
if (left >= right) return nullptr;
// 分割点下maxValueIndex
// 分割点下maxValueIndex
int maxValueIndex = left;
for (int i = left + 1; i < right; ++i) {
if (nums[i] > nums[maxValueIndex]) maxValueIndex = i;
@@ -212,7 +212,7 @@ root->right = traversal(nums, maxValueIndex + 1, right);
这道题目其实和 [二叉树:构造二叉树登场!](https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html) 是一个思路,比[二叉树:构造二叉树登场!](https://programmercarl.com/0106.从中序与后序遍历序列构造二叉树.html) 还简单一些。
**注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下索引直接在原数组上操作,这样可以节约时间和空间上的开销。**
**注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下索引直接在原数组上操作,这样可以节约时间和空间上的开销。**
一些同学也会疑惑什么时候递归函数前面加if什么时候不加if这个问题我在最后也给出了解释。