Tip-Review-Algorithm 第七期

Tip

Xcode注释文档模板

按照Xcode支持的方式注释代码,一方面是良好的编写规范需要,另一方面可以在Xcode查看帮助文档「Option + Click」或者智能提示时都能看到编写者的注释,非常方便。

最近总结了两个注释方式:

  • 「Command + Option + /」
    在类名、方法名、变量名上输入快捷键就可以生成注释模板。
  • 枚举://!<
    • 例如int apple = 1, //!< 枚举苹果
    • 但是我没找到对应的快捷键,所以是利用Dash的Snippet功能,设置缩写//enum替换为//!< ,这样可以在注释枚举时输入//enum即可。

因为目前都是基于源码开发的,源码都可见,所以无论是在header file还是implementation file注释,帮助文档都是提示注释内容的。但是考虑到如果要生成library的话,可能在header file内注释比较规范。

Review

nil-null-mess in Objective-C and Swift

Andy Ibanez写的这篇文章讲了nil到NSNull再到Swift的Optional的一些变化。

这里强调了一点就是,nil 是 本身,而 NSNull 是的象征。if nil is the essence of nothingness itself, NSNull is a represence of nothingness.

Algorithm

二叉树中的最大路径和

描述:

路径 被定义为一条从树中任意节点出发,沿父节点-子节点连接,达到任意节点的序列。该路径 至少包含一个 节点,且不一定经过根节点。

路径和 是路径中各节点值的总和。

给你一个二叉树的根节点 root ,返回其 最大路径和

思路:

后序遍历。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/*
* @lc app=leetcode.cn id=124 lang=cpp
*
* [124] 二叉树中的最大路径和
*/

// @lc code=start
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
int result = INT_MIN;
int maxSide(TreeNode* root) {
if (root == nullptr) return 0;
int left = max(0, maxSide(root->left));
int right = max(0, maxSide(root->right));

result = max(result, root->val + left + right); // 联结左右
return max(left, right) + root->val;
}
// 后序遍历
int maxPathSum(TreeNode* root) {
return max(result, maxSide(root));
}
};
// @lc code=end