今天投了京东,京东招聘系统虽然跟网易一样蠢,但至少还是自己的,不是第三方网站。把自己信息卖给第三方网站的行为太蠢了。
关于leetcode,有些题,我写出来的代码虽然也是对的,但就感觉很丑,看了其他人的解法之后就发现好优美。
比如这个根据排序好的数组建一棵适度平衡的二叉搜索树:
这是我的:
class Solution
{
public:
TreeNode *root;
void build(TreeNode **rtp,vector<int>& nums,int l,int r)
{
int m=l+r>>1;
if (l>r) return;
TreeNode *&rt=*rtp;
rt=new TreeNode(nums[m]);
rt->left=rt->right=NULL;
build(&rt->left,nums,l,m-1);
build(&rt->right,nums,m+1,r);
}
TreeNode* sortedArrayToBST(vector<int>& nums)
{
build(&root,nums,0,nums.size()-1);
return root;
}
};
看了个别人的:
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
int len = nums.size();
return build(nums, 0, len - 1);
}
TreeNode *build(vector<int>& nums, int l, int r) {
if (l > r) return nullptr;
if (l == r) {
return new TreeNode(nums[l]);
}
int mid = l + (r - l) / 2;
TreeNode *root = new TreeNode(nums[mid]);
root->left = build(nums, l, mid - 1);
root->right = build(nums, mid + 1, r);
return root;
}
};
以前都是用下面这个好的写法来着,包括以前写线段树各种树的时候,今天智商捉鸡没想起来。
看起来所有的事情归根到底都是要背。
PS: 其实他那个if (l==r)
的个判断完全可以去掉。
Comments
注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。