二分.
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;
}