思路:利用二分查詢分別求出該數字在陣列中第一次和最後一次出現的位置下標
**:
#include "stdafx.h"
#include #include using namespace std;
//找到陣列中第一次出現key的元素的下標
int binarysearchfirstkey(int narr, int nlength, int key)
else
}if (nlow >= 0 && nlow < nlength && narr[nlow] == key)
else
}//找到陣列中最後一次出現key的元素的下標
int binarysearchlastkey(int narr, int nlength, int key)
else
}if (nhigh >= 0 && nhigh < nlength && narr[nhigh] == key)
else }
int getnumberofkey(int narr, int nlength, int key)
else }
int _tmain(int argc, _tchar* argv)
; int key = 0;
cin >> key;
cout << getnumberofkey(narr, 8, key) << endl;
system("pause");
return 0;
}
執行結果:
面試題 數字在排序陣列中出現的次數
本體的思路 二分查詢 因為陣列有序 查詢數字 在陣列 中出現的次數 特殊 陣列為空 數字不出現在陣列中 數字出現在頭 尾 數字剛好為中間值 數字不為中間值 先對 返回 再判斷對 如果是首,則令last first,迴圈判斷list last 是否依舊等於a,相等則計數加 不等時,若last是第乙個不...
面試題38 數字在排序陣列中出現的次數
問題說明 1.給定排序的陣列,例如從小到大已經排序。2.給定某個查詢關鍵字,求出該關鍵字出現的次數。3.完全遍歷一遍,時間複雜度為o n 並未充分利用排序的資訊。4.需要借鑑二分查詢的思想改進,演算法的時間複雜度為o logn package com.zhang.csdn author pizi d...
面試題(3)數字在排序陣列中出現的次數
題目 統計乙個數字在排序陣列中出現的次數,例如輸入排序陣列和數字3,由於3在陣列中出現了4次,所以輸出4 思路 假設k為陣列中要統計的數字,我們可以可以確定第乙個k在陣列中出現的位置和最後乙個k在陣列中出現的位置,那麼如何確定第乙個k在陣列中出現的位置呢?我們可以先使用二分查詢的方法在陣列中找到乙個...