题解 | #数组在升序数组中出现的次数#
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=265&rp=1&ru=%2Fexam%2Foj%2Fta&qru=%2Fexam%2Foj%2Fta&sourceUrl=%2Fexam%2Foj%2Fta%3FjudgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D13%26type%3D265&difficulty=&judgeStatus=3&tags=&title=&gioEnter=menu
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if (data.empty()) {
return 0;
}
// 升序数组
int left = 0, right = data.size() - 1, mid = 0;
int res = 1;
while (left <= right) {
mid = left + (right - left) / 2;
if (data[mid] == k) {
break;
} else if (data[mid] > k) {
right = mid - 1;
} else {
left = mid + 1;
}
}
if (left > right) {
return 0;
}
left = right = mid;
--left, ++right;
while (left >= 0 && data[left--] == k) {
++res;
}
while (right < data.size() && data[right++] == k) {
++res;
}
return res;
}
};

OPPO公司福利 1193人发布