mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
Merge pull request #940 from Leetion07/master
修改网页编程素养部分的一些吹毛求疵,添加此部分修改的具体内容
This commit is contained in:
@ -45,7 +45,21 @@
|
||||
|
||||

|
||||
|
||||
那么此时大家是不是应该知道了,数组如何转化成 二叉树了。**如果父节点的数组下标是i,那么它的左孩子下标就是i * 2 + 1,右孩子下标就是 i * 2 + 2**。
|
||||
那么此时大家是不是应该知道了,数组如何转化成 二叉树了。**如果父节点的数组下标是i,那么它的左孩子下标就是i * 2 + 1,右孩子下标就是 i * 2 + 2**。计算过程为:
|
||||
|
||||
如果父节点在第$k$层,第$m,m \in [0,2^k]$个节点,则其左孩子所在的位置必然为$k+1$层,第$2*(m-1)+1$个节点。
|
||||
|
||||
- 计算父节点在数组中的索引:
|
||||
$$
|
||||
index_{father}=(\sum_{i=0}^{i=k-1}2^i)+m-1=2^k-1+m-1
|
||||
$$
|
||||
|
||||
- 计算左子节点在数组的索引:
|
||||
$$
|
||||
index_{left}=(\sum_{i=0}^{i=k}2^i)+2*m-1-1=2^{k+1}+2m-3
|
||||
$$
|
||||
|
||||
- 故左孩子的下表为$index_{left}=index_{father}\times2+1$,同理可得到右子孩子的索引关系。也可以直接在左子孩子的基础上`+1`。
|
||||
|
||||
那么这里又有同学疑惑了,这些我都懂了,但我还是不知道 应该 怎么构造。
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
最近看了很多录友在[leetcode-master](https://mp.weixin.qq.com/s/wZRTrA9Rbvgq1yEkSw4vfQ)上提交的代码,发现很多录友的代码其实并不规范,这一点平时在交流群和知识星球里也能看出来。
|
||||
|
||||
很多录友对代码规范应该不甚了解,代码看起来并不舒服。
|
||||
很多录友对代码规范应该了解得不多,代码看起来并不舒服。
|
||||
|
||||
所以呢,我给大家讲一讲代码规范,我主要以C++代码为例。
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
|
||||
现在一些小公司,甚至大公司里的某些技术团队也不注重代码规范,赶进度撸出功能就完事,这种情况就要分两方面看:
|
||||
|
||||
* 第一种情况:这个项目在业务上具有巨大潜力,需要抢占市场,只要先站住市场就能赚到钱,每年年终好几十万,那项目前期还关心啥代码风格,赶进度把功能撸出来,赚钱就完事了,例如12年的微信,15年的王者荣耀。这些项目都是后期在不断优化的。
|
||||
* 第一种情况:这个项目在业务上具有巨大潜力,需要抢占市场,只要先站住市场就能赚到钱,每年年终好几十万,那项目前期还关心啥代码风格,赶进度把功能撸出来,赚钱就完事了,例如12年的微信,15年的王者荣耀。这些项目都是后期再不断优化的。
|
||||
|
||||
* 第二种情况:这个项目没赚到钱,半死不活的,代码还没有设计也没有规范,这样对技术人员的伤害就非常大了。
|
||||
|
||||
@ -39,7 +39,7 @@
|
||||
|
||||
这里我简单说一说规范问题。
|
||||
|
||||
**权威的C++规范以Google为主**,我给大家下载了一份中文版本,在公众号「代码随想录」后台回复:googlec++编程规范,就可以领取。
|
||||
**权威的C++规范以Google为主**,我给大家下载了一份中文版本,在公众号「代码随想录」后台回复:googlec++编程规范,就可以领取。(涉及到微信后台的回复,没更改)
|
||||
|
||||
**具体的规范要以自己团队风格为主**,融入团队才是最重要的。
|
||||
|
||||
|
@ -13,11 +13,11 @@
|
||||
|
||||
然后录友就问了:如何打日志呢?
|
||||
|
||||
其实在力扣上打日志也挺方便的,我一般调试就是直接在力扣上打日志,偶尔需要把代码粘到本例来运行添加日志debug一下。
|
||||
其实在力扣上打日志也挺方便的,我一般调试就是直接在力扣上打日志,偶尔需要把代码粘到本地来运行添加日志debug一下。
|
||||
|
||||
在力扣上直接打日志,这个就不用讲,C++的话想打啥直接cout啥就可以了。
|
||||
|
||||
我来说一说力扣代码如何在本题运行。
|
||||
我来说一说力扣代码如何在本地运行。
|
||||
|
||||
毕竟我们天天用力扣刷题,也应该知道力扣上的代码如何在本地编译运行。
|
||||
|
||||
|
31
problems/前序/编程素养部分的吹毛求疵.md
Normal file
31
problems/前序/编程素养部分的吹毛求疵.md
Normal file
@ -0,0 +1,31 @@
|
||||
## 代码风格
|
||||
|
||||
- `不甚了解`是不能更了解的意思,这个地方应该使用存疑。
|
||||
- `后期在不断优化`,'在'应为'再'。
|
||||
- `googlec++编程规范`,Google拼写错误
|
||||
|
||||
## 代码本地编译
|
||||
|
||||
- `粘到本例来运行`存疑,应为本地
|
||||
- `本题运行`存疑,应为本地
|
||||
|
||||
## ACM二叉树
|
||||
|
||||
- 左孩子和右孩子的下标不太好理解。我给出证明过程:
|
||||
|
||||
如果父节点在第$k$层,第$m,m \in [0,2^k]$个节点,则其左孩子所在的位置必然为$k+1$层,第$2*(m-1)+1$个节点。
|
||||
|
||||
- 计算父节点在数组中的索引:
|
||||
$$
|
||||
index_{father}=(\sum_{i=0}^{i=k-1}2^i)+m-1=2^k-1+m-1
|
||||
$$
|
||||
|
||||
- 计算左子节点在数组的索引:
|
||||
$$
|
||||
index_{left}=(\sum_{i=0}^{i=k}2^i)+2*m-1-1=2^{k+1}+2m-3
|
||||
$$
|
||||
|
||||
- 故左孩子的下表为$index_{left}=index_{father}\times2+1$,同理可得到右子孩子的索引关系。也可以直接在左子孩子的基础上`+1`。
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user