統計乙個數字在排序陣列中出現的次數

2021-06-09 11:33:53 字數 1009 閱讀 5704

題目描述:統計乙個數字在排序陣列中出現的次數。

輸入:每個測試案例包括兩行:

第一行有1個整數n,表示陣列的大小。1<=n <= 10^6。

第二行有n個整數,表示陣列元素,每個元素均為int。

第三行有1個整數m,表示接下來有m次查詢。1<=m<=10^3。

下面有m行,每行有乙個整數k,表示要查詢的數。

輸出:對應每個測試案例,有m行輸出,每行1整數,表示陣列中該數字出現的次數。

樣例輸入:

81 2 3 3 3 3 4 513

樣例輸出:

4
解:用二分查詢兩次,確定要查詢的數的下標的上下界。
#include #include #include using namespace std;

int a[1000001];

int find_lowest(int *a, int l, int r, int key)//a[l...r]

else if (a[mid] > key)

else

}if(isfind)

return lowest;

else

return -1;

}int find_highest(int *a, int l, int r, int key)

else if (a[mid] > key)

else

}if(isfind)

return highest;

else

return -1;

}int main()

scanf("%d", &m);

while(m--)

else

printf("0\n");

}

}return 0;

}

統計乙個數字在排序陣列中出現的次數

題目 統計乙個數字在排序陣列中出現的次數。思路 採用二分查詢的思想,尋找該數字第一次出現的下標和最後一次出現的下標,最後將兩個下標相減加1,便可得出出現的次數。具體的 實現如下所示 public class solution int firstindex getfirstindex array,0,...

c語言 統計乙個數字在排序陣列中出現的次數

題目 統計乙個數字在排序陣列 現的次數。比如 排序陣列 1。2,3,3,3,3,4。5 和數字3,因為3出現了4次。因此輸出4 有一種最簡單的演算法,遍歷。可是有比它效率更高的 先看遍歷 include include int num time int arr,int len,int a retur...

數字在排序陣列中出現次數

統計乙個數字在排序陣列中出現的次數。思路 求乙個數字在這個排序陣列中出現的次數,首先想到的是使用二分查詢,當我找到乙個位置,然後往前就可以到達最前面第乙個出現該數字的位置,往後就可以到達最後面最後乙個出現該數字的位置,然後兩個位置相減此時就得到該數字出現的次數。但是問題在於我用二分查詢到位置後,然後...