08月14, 2018

投京东 & leetcode day 2

今天投了京东,京东招聘系统虽然跟网易一样蠢,但至少还是自己的,不是第三方网站。把自己信息卖给第三方网站的行为太蠢了。

关于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)的个判断完全可以去掉。

本文链接:https://diary.fanzheng.org/post/2018-08-14.html

-- EOF --

Comments

评论加载中...

注:如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理。