轻松的编程学习
首页
下载应用
登录 / 注册
菜单
数出它出现了几次
👁️ 1 人浏览
💬 0 人评论
❤️ 添加收藏
补全
count_of
:用左右边界数出目标出现的次数,不存在返回 0。
(本题用
g++ -std=c++17 -O0
编译。)
提交你的答案
请登录后提交答案。
去登录
← 再写一个右边界
lower_bound 返回什么 →
更多题目
改成"你好,有词"
输出"100 分"
把年龄改成 20
输出学习天数 30
修复:给文字加引号
修复:补上右括号
代码编辑器
语言:
python3
c11
cpp17
Ctrl
+
Enter
运行
👩🏫 AI
▶ 运行代码
重置代码
打印代码
#include <iostream> #include <string> #include <vector> using namespace std; int left_bound(const vector<int>& a, int target) { // 最左边那个 target 的下标,没有返回 -1 int lo = 0, hi = (int)a.size() - 1, got = -1; while (lo <= hi) { int mid = lo + (hi - lo) / 2; if (a[mid] == target) { got = mid; hi = mid - 1; } else if (a[mid] < target) { lo = mid + 1; } else { hi = mid - 1; } } return got; } int right_bound(const vector<int>& a, int target) { // 最右边那个 target 的下标,没有返回 -1 int lo = 0, hi = (int)a.size() - 1, got = -1; while (lo <= hi) { int mid = lo + (hi - lo) / 2; if (a[mid] == target) { got = mid; lo = mid + 1; } else if (a[mid] < target) { lo = mid + 1; } else { hi = mid - 1; } } return got; } int count_of(const vector<int>& a, int target) { // 用左右边界数出 target 出现的次数,不存在返回 0 int l = left_bound(a, target); // TODO: 左边界是 -1 说明不存在,返回 0;否则是 右边界 - 左边界 + 1 return -1; } int main() { vector<int> A = {13, 15, 17, 17, 17, 23, 24}; cout << count_of(A, 17) << endl; }
本次输入:
输出:
👩🏫
AI
请登录后使用 AI 老师
×
登录后可获得解题思路、提示与错误分析。
去登录
关闭
🎉
恭喜你,回答正确!
系统判定:正确
我知道了
💬 题目评论
🔒
登录并作答后可看讨论