常見的算法面試題

學人智庫 時間:2018-02-10 我要投稿
【clearvueentertainment.com - 學人智庫】

  算法面試題中經(jīng)常出現(xiàn)的一種題目就是查找或者是排序. 個人感覺有80%的題目都和查找排序有關,大部分常用的排序算法時間復雜度都是O(nLogn)。這個只能說是通用解,一般解,對于算法面試題中往往要求很低的時間復雜度。  

  例如下面這個題目

  已知一個數(shù)組長為m 中間存放的都是整數(shù) 其值范圍為1-m ,中間的元素有可能重復 也有可能不重復

  如何在O(M)的情況下查到 (1-m)的數(shù)中 哪些數(shù)重復了,哪些數(shù)沒有出現(xiàn)

  counting sort 的本質是 新建一個長度為M的數(shù)組An 每一個數(shù)組下標代表一個數(shù) ,數(shù)組中的值代表這個元素出現(xiàn)的次數(shù) (初始值都為0)

  那么, 遍歷一次m 遇到一個數(shù) 就在對應的下標上加1

  那么最終可以得到一個An 其中包含了所有元素的出現(xiàn)個數(shù)

  將其展開 就可以獲得排序完的數(shù)組

  這是一種特殊的算法,只能解決特殊的問題 但是他的時間復雜度是O(n)

  如果在你遇到排序 或者查找之類的算法題的時候,不如上去先試試counting sort

相關文章分享:

四大非常規(guī)性面試問題 五大最棘手的面試問題 九種最難纏的面試題 http://clearvueentertainment.com/