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

2021-08-28 05:43:59 字數 1815 閱讀 7108

/*

* 面試題題

53-題目一:數字在排序陣列出現的次數

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

* 思路:利用二分查詢

+遞迴思想,進行尋找。當目標值與中間值相等時進行判斷

*/

publicclassno53getnumberofk ;

system.out

.println(

n.getnumberofk(

arr, 3));

} publicintgetnumberofk(int

array

,intk)

} returnnumber;

} //找到排序陣列中的最後乙個k

privateintgetlastk(int

array

,intk

,intstart

,intend)

intmidindex

= (start

+ end

) / 2;

intmiddata

= array

[midindex];

if(

middata

== k

)else

}elseif(

middata

<

k)else

returngetlastk(

array,k

,start

,end);

} //找到排序陣列中的第乙個k

privateintgetfirstk(int

array

,intk

,intstart

,intend)

intmidindex

= (start

+ end

) / 2;

intmiddata

= array

[midindex];

if(

middata

== k

)else

}elseif(

middata

<

k)else

returngetfirstk(

array,k

,start

,end);

} }

面試題53 在排序陣列中查詢數字

統計乙個數字在排序陣列中出現的次數,例如,輸入排序陣列和數字3,由於3在這個陣列中出現了4次,因此輸出4.思路 既然輸入的陣列是排序的,那麼我們自然能想到用二分查詢演算法,如何高效的利用二分查詢,可以分別利用二分查詢找到第乙個k和最後乙個k。class solution return number ...

面試題53 在排序陣列中查詢數字

題目一 統計乙個數字在排序陣列 現的次數。解法一 利用c stl的二分查詢 class solution int getnumberofk vectordata,int k 解法二 看見有序,肯定就是二分查詢了,演算法比較簡單,不多說,值得一提的是,不要拘泥於遞迴,要會迴圈寫法。暴力匹配,時間複雜度...

面試題53 在排序陣列中查詢數字

統計乙個數字在排序陣列 現的次數。考察點 二分查詢的應用 知識遷移能力。思路 可以直接想到時間複雜度為o n 的從前到後的遍歷方法。這裡採用二分查詢法,找到特定出現的k,如果中間的數字比k 大,那麼第一次出現的k 只能出現在前半段,如果中間的數字比k小,那麼第一次出現k的位置只能在後半段,如果相等的...