有序陣列中數字出現次數

2021-06-18 03:07:04 字數 730 閱讀 4546

題目:統計有序陣列中排序某乙個數出現的次數

比如:中,2出現了3次,3出現了0次

思路:利用二分查詢,找到某乙個數在陣列中出現的第乙個下標firstindex和最後乙個下標lastindex

出現次數就是:lastindex - firstindex + 1

#include using namespace std;

#define nsiz 100

int getfirsindex(int data, int n, int key)

else

}else if (data[mid] < key)

else

}return -1;

}int getlastindex(int data, int n, int key)

else

}else if (data[mid] < key)

else

}return -1;

}int getnum(int data, int n, int key)

return 0;

}int main()

; int n = sizeof(data)/sizeof(data[0]);

int key = 2;

printf("key:%d 個數:%d\n",key, getnum(data, n, key));

return 0;

}

陣列 數字在有序陣列出現的次數

統計乙個數字在排序陣列 現的次數 思路 二分找到該數字的乙個位置,然後向左向右探索 複雜度log n 級別 class solution else if data mid 0 data i k i flag 1 while i高階思路 因為data中都是整數,所以可以稍微變一下,不是搜尋k的兩個位置...

有序陣列中找出給定數字的出現次數

問題 在排序陣列中,找出給定數字的出現次數,比如 1,2,2,2,3 中2的出現次數是3次。解答 使用二分查詢的方法分別找出給定數字的開始位置minindex和結束位置maxindex,最壞情況下時間複雜度為o logn 簡單 如下 二分搜尋 2.找 最大 下標i使得x i v 返回 i 或者 1 ...

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

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