Merge pull request #2453 from sss1h/master

修正错别字和语病,添加cpp代码高亮
This commit is contained in:
程序员Carl
2024-03-13 15:44:29 +08:00
committed by GitHub
8 changed files with 25 additions and 25 deletions

View File

@ -82,7 +82,7 @@ public:
// ListNode *tmp = slow->next; C++释放内存的逻辑
// slow->next = tmp->next;
// delete nth;
// delete tmp;
return dummyHead->next;
}

View File

@ -42,7 +42,7 @@
代码如下:
```
```cpp
TreeNode* deleteNode(TreeNode* root, int key)
```
@ -50,7 +50,7 @@ TreeNode* deleteNode(TreeNode* root, int key)
遇到空返回,其实这也说明没找到删除的节点,遍历到空节点直接返回了
```
```cpp
if (root == nullptr) return root;
```
@ -106,7 +106,7 @@ if (root->val == key) {
这里相当于把新的节点返回给上一层,上一层就要用 root->left 或者 root->right接住代码如下
```
```cpp
if (root->val > key) root->left = deleteNode(root->left, key);
if (root->val < key) root->right = deleteNode(root->right, key);
return root;

View File

@ -79,7 +79,7 @@ public:
代码如下:
```
```cpp
TreeNode* trimBST(TreeNode* root, int low, int high)
```
@ -87,7 +87,7 @@ TreeNode* trimBST(TreeNode* root, int low, int high)
修剪的操作并不是在终止条件上进行的,所以就是遇到空节点返回就可以了。
```
```cpp
if (root == nullptr ) return nullptr;
```
@ -97,7 +97,7 @@ if (root == nullptr ) return nullptr;
代码如下:
```
```cpp
if (root->val < low) {
TreeNode* right = trimBST(root->right, low, high); // 寻找符合区间[low, high]的节点
return right;
@ -108,7 +108,7 @@ if (root->val < low) {
代码如下:
```
```cpp
if (root->val > high) {
TreeNode* left = trimBST(root->left, low, high); // 寻找符合区间[low, high]的节点
return left;
@ -119,7 +119,7 @@ if (root->val > high) {
最后返回root节点代码如下
```
```cpp
root->left = trimBST(root->left, low, high); // root->left接入符合条件的左孩子
root->right = trimBST(root->right, low, high); // root->right接入符合条件的右孩子
return root;
@ -133,7 +133,7 @@ return root;
如下代码相当于把节点0的右孩子节点2返回给上一层
```
```cpp
if (root->val < low) {
TreeNode* right = trimBST(root->right, low, high); // 寻找符合区间[low, high]的节点
return right;
@ -142,7 +142,7 @@ if (root->val < low) {
然后如下代码相当于用节点3的左孩子 把下一层返回的 节点0的右孩子节点2 接住。
```
``` cpp
root->left = trimBST(root->left, low, high);
```

View File

@ -69,7 +69,7 @@ edges[2][0] = 2edges[2][1] = 3
搞清楚之后,我们如何统计入度呢?
即 edges[i][1] 表示的节点都是 箭头指向的节点,即这个点有一个入度! (如果想统计出度,那么就是 edges[i][0])。
即 edges[i][1] 表示的节点都是 箭头指向的节点,即这个点有一个入度! (如果想统计出度,那么就是 edges[i][0])。
所以,统计入度的代码如下:
@ -108,7 +108,7 @@ if (vec.size() > 0) {
可以定义一个函数,代码如下:
```
```cpp
// 在有向图里找到删除的那条边,使其变成树,返回值就是要删除的边
vector<int> getRemoveEdge(const vector<vector<int>>& edges)
```

View File

@ -59,7 +59,7 @@
代码如下:
```
```cpp
TreeNode* insertIntoBST(TreeNode* root, int val)
```
@ -69,7 +69,7 @@ TreeNode* insertIntoBST(TreeNode* root, int val)
代码如下:
```
```cpp
if (root == NULL) {
TreeNode* node = new TreeNode(val);
return node;
@ -88,7 +88,7 @@ if (root == NULL) {
代码如下:
```
```cpp
if (root->val > val) root->left = insertIntoBST(root->left, val);
if (root->val < val) root->right = insertIntoBST(root->right, val);
return root;
@ -120,7 +120,7 @@ public:
那么递归函数定义如下:
```
```cpp
TreeNode* parent; // 记录遍历节点的父节点
void traversal(TreeNode* cur, int val)
```

View File

@ -138,7 +138,7 @@ passwd gitpassword
创建`.ssh` 目录,如果`.ssh` 已经存在了,可以忽略这一项
为啥用配置ssh公钥呢同学们记不记得我使用github上传上传代码的时候也要把自己的公钥配置上github上
为啥用配置ssh公钥呢同学们记不记得我使用github上传代码的时候也要把自己的公钥配置上传到github上
这也是方面每次操作git仓库的时候不用再去输入密码
@ -186,7 +186,7 @@ cd /home/git/.ssh/
cat id_rsa.pub >> authorized_keys
```
如何看我们配置的密钥是否成功呢, 在客户直接登录git服务器看看是否是免密登陆
如何看我们配置的密钥是否成功呢, 在客户直接登录git服务器看看是否是免密登陆
```
ssh git@git服务器ip
```

View File

@ -29,7 +29,7 @@
所以 1GHz = 10亿Hz表示CPU可以一秒脉冲10亿次有10亿个时钟周期这里不要简单理解一个时钟周期就是一次CPU运算。
例如1 + 2 = 3cpu要执行四次才能完整这个操作步骤一把1放入寄存步骤二把2放入寄存器步骤三做加法步骤四保存3。
例如1 + 2 = 3cpu要执行四次才能完整这个操作步骤一把1放入寄存步骤二把2放入寄存器步骤三做加法步骤四保存3。
而且计算机的cpu也不会只运行我们自己写的程序上同时cpu也要执行计算机的各种进程任务等等我们的程序仅仅是其中的一个进程而已。
@ -52,7 +52,7 @@
* 火箭科学家需要大致知道一枚试射火箭的着陆点是在大海里还是在城市中;
* 医学研究者需要知道一次药物测试是会杀死还是会治愈实验对象;
所以**任何开发计算机程序的软件工程师都应该能够估计这个程序的运行时间是一秒钟还是一年**。
所以**任何开发计算机程序的软件工程师都应该能够估计这个程序的运行时间是一秒钟还是一年**。
这个是最基本的,所以以上误差就不算事了。

View File

@ -108,7 +108,7 @@ bool isSame(int u, int v) {
![](https://code-thinking-1253855093.file.myqcloud.com/pics/20230602102619.png)
如果这棵多叉树高度很深的话每次find函数 去寻找的过程就要递归很多次。
如果这棵多叉树高度很深的话每次find函数 去寻找的过程就要递归很多次。
我们的目的只需要知道这些节点在同一个根下就可以,所以对这棵多叉树的构造只需要这样就可以了,如图:
@ -300,7 +300,7 @@ join(3, 2);
**因为路经压缩了**
即如下代码在寻找的过程中,会有路径压缩,减少 下次查询的路径长度。
即如下代码在寻找的过程中,会有路径压缩,减少 下次查询的路径长度。
```
// 并查集里寻根的过程
@ -396,7 +396,7 @@ void join(int u, int v) {
if (rank[u] <= rank[v]) father[u] = v; // rank小的树合入到rank大的树
else father[v] = u;
if (rank[u] == rank[v] && u != v) rank[v]++; // 如果两棵树高度相同则v的高度+1因为,方面 if (rank[u] <= rank[v]) father[u] = v; 注意是 <=
if (rank[u] == rank[v] && u != v) rank[v]++; // 如果两棵树高度相同则v的高度+1因为面 if (rank[u] <= rank[v]) father[u] = v; 注意是 <=
}
```
@ -423,7 +423,7 @@ void join(int u, int v) {
空间复杂度: O(n) 申请一个father数组。
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入研究。
关于时间复杂度,如果想精确表达出来需要繁琐的数学证明,就不在本篇讲解范围内了,大家感兴趣可以自己去深入研究。
这里做一个简单的分析思路。