加载中...

总结和背诵一下常用的模板了... 尽量一样吧.

二分.

int binarySearch(vector<int> a, int val) {
    int l = 0, r = a.size() - 1;
    while (l <= r) {
        int mi = l + (r - l) / 2;
        if (a[mi] < val)
            l = mi + 1;
        else if (val < a[mi])
            r = mi - 1;
        else if (val == a[mi])
            r = mi - 1; //左边界  最终返回的是 插入位置;
            // l = mi + 1; //右边界
    }
    return l;// l 左边界  return r: 右边界;
}

二叉树

二叉树

层序遍历

auto levelOrder(TreeNode* root) {
    queue<TreeNode*> que;
    if (root != NULL) que.push(root);
    vector<vector<int>> res;
    while (!que.empty()) {
        vector<int> vec;
        int n = que.size();
        while (n--) {
            auto node = que.front();que.pop();
            vec.push_back(node->val);
            if (node->left) que.push(node->left);
            if (node->right) que.push(node->right);
        }
        res.push_back(vec);
    }
    return res;
}
posted @ 2022-01-23 00:38  benenzhu  阅读(41)  评论(0)    收藏  举报