面試題53 數字在排序陣列中出現的次數

2021-08-26 12:21:11 字數 843 閱讀 1401

題目描述

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

方法一:bf

class solution 

return cnt;

}};

方法二:二分查詢第乙個和最後乙個k

class solution 

else

if(data[mid] > k)

right = mid - 1;

else

left = mid + 1;

return getfirstk(data, k, left, right);

}int getlastk(vector

& data ,int k, int left, int right)

else

if(data[mid] > k)

right = mid - 1;

else

left = mid + 1;

return getlastk(data, k, left, right);

}int getnumberofk(vector

data ,int k)

};

方法三:因為data中都是整數,所以可以稍微變一下,不是搜尋k的兩個位置,而是搜尋k-0.5和k+0.5,這兩個數應該插入的位置,然後相減即可。

class solution 

private:

int bisearch(const

vector

& data, double num)

return s;

}};

面試題 數字在排序陣列中出現的次數

本體的思路 二分查詢 因為陣列有序 查詢數字 在陣列 中出現的次數 特殊 陣列為空 數字不出現在陣列中 數字出現在頭 尾 數字剛好為中間值 數字不為中間值 先對 返回 再判斷對 如果是首,則令last first,迴圈判斷list last 是否依舊等於a,相等則計數加 不等時,若last是第乙個不...

面試題32 數字在排序陣列中出現的次數

思路 利用二分查詢分別求出該數字在陣列中第一次和最後一次出現的位置下標 include stdafx.h include include using namespace std 找到陣列中第一次出現key的元素的下標 int binarysearchfirstkey int narr,int nle...

面試題38 數字在排序陣列中出現的次數

問題說明 1.給定排序的陣列,例如從小到大已經排序。2.給定某個查詢關鍵字,求出該關鍵字出現的次數。3.完全遍歷一遍,時間複雜度為o n 並未充分利用排序的資訊。4.需要借鑑二分查詢的思想改進,演算法的時間複雜度為o logn package com.zhang.csdn author pizi d...