c_cpp 计算已排序数组中的出现次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 计算已排序数组中的出现次数相关的知识,希望对你有一定的参考价值。
/*
http://ideone.com/RiTLHk
http://www.geeksforgeeks.org/count-number-of-occurrences-in-a-sorted-array/
http://www.practice.geeksforgeeks.org/problem-page.php?pid=577
https://www.hackerearth.com/notes/searching-code-monk/
*/
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int firstOccurence(int a[], int left, int right, int item){
int mid;
while(right - left > 1){
mid = left + (right - left) / 2;
if(a[mid] >= item)
right = mid;
else
left = mid;
}
return right;
}
int lastOccurence(int a[], int left, int right, int item){
int mid;
while(right - left > 1){
mid = left + (right - left) / 2;
if(a[mid] <= item)
left = mid;
else
right = mid;
}
return left;
}
int main() {
int t, n, item;
cin >> t;
while(t--){
cin >> n >> item;
int a[501];
for(int i=0; i<n; i++)
cin >> a[i];
int first = firstOccurence(a, -1, n-1, item);
int last = lastOccurence(a, 0, n, item);
int count = 0;
if (a[first] == item && a[last] == item)
count = last - first + 1;
else
count = 0;
if(count == 0)
cout << -1 <<endl;
else
cout << count << endl;
}
return 0;
}
以上是关于c_cpp 计算已排序数组中的出现次数的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 查找已排序数组中给定数字的出现次数
c_cpp 在已旋转未知次数的n个整数的递增顺序排序数组中查找元素。 #searching #CtCI
c_cpp 使用后缀数组计算给定文本中子字符串的出现次数
c_cpp 搜索已排序和旋转的数组中的元素
数字在排序数组中出现的次数
C语言 怎么计算数组中每一个不同元素出现的次数