在算法面試中,數組是必考的基礎數據結構
程序員
其實數據的題目在思想上通常比較簡單的,一想就是這麼一回事面試
可是若是不熟練的話,用代碼實現就不是那麼回事了,難就難在代碼實操上算法
這裏呢 我從leetcode中給你們總結了五道數組相關的經典面試題目數組
每一道題目都表明一個類型,一個思想,若是沒有作過的同窗強烈建議抽空作一下微信
第一道:搜索插入位置
leetcode 編號35數據結構
這道題目呢,考察的數據的基本操做,思路很簡單,可是在經過率在簡單題裏並不高,不要輕敵less
能夠使用暴力解法,經過這道題目,若是要求更優的算法,建議試一試用二分法,來解決這道題目編輯器
暴力解法時間複雜度:O(n)
二分法時間複雜度:O(logn)flex
二分法是算法面試中的常考題,建議經過這道題目,鍛鍊本身手撕二分的能力。spa
第二道:移除元素
leetcode 編號27
在這道題目中,咱們只要理解數組在內存中的結構,就知道數據中的元素只能被覆蓋掉,而能直接刪掉
因此這裏題目中說的移除元素,實際上是覆蓋掉某一個元素
那麼暴力的解法,很簡單,兩層for循環,一個for循環遍歷數組元素 ,第二個for循環更新數組
很明顯暴力解法時間複雜度是O(n), 而後嘗試一個更優解,快慢指針法,時間複雜度能夠作到O(n)
快慢指針法是解決數據問題中常見操做,頭一個接觸這個算法 仍是有點懵的,
建議經過這道題目瞭解一下快慢指針法
第三道:贖金信
leetcode 編號383
這道題題意很清晰,就是用判斷第一個字符串ransom能不能由第二個字符串magazines裏面的字符構成,可是這裏須要注意兩點1.
第一點「爲了避免暴露贖金信字跡,要從雜誌上搜索各個須要的字母,組成單詞來表達意思」 這裏說明雜誌裏面的字母不可重複使用。
第二點 「你能夠假設兩個字符串均只含有小寫字母。」 說明只有小寫字母,這一點很重要
由於題目只有小寫字母,那咱們能夠採用空間換取時間的哈希策略(字典計數法),
用一個長度爲26的數組還記錄magazine裏字母出現的次數,而後再用ransomNote去驗證這個數組是否包含了ransomNote所須要的全部字母。
建議經過這道題目,深刻理解一下字典計數法的思想
第四道:長度最小的子數組
leetcode 編號209
這道題目暴力是也能夠的,時間複雜度爲O(n^2)
其實也是經過一個快指針和慢指針來實現一個滑動窗口,最終獲得長度最小的子數組,時間複雜度爲O(n)
建議經過這道題目瞭解一下滑動窗口的思想
第五道:螺旋矩陣
leetcode 編號59
這是一道模擬題,就是模擬螺旋矩陣
這道題絕對是面試中的常客,特別是筆試的時候
並且這道題不少同窗就算作過,過一段時間,仍是作這道題目 ,仍是作很差。
解題的關鍵在於在循環遍歷的時候須要定義好本身的循環不變量
這道題目是數組面試題中最多見的一個類型之一
總結
這五道題是數組中很是典型的題目
若是這幾道題目尚未作過,還等啥,趕忙搞起啊!
我的微信,歡迎來撩!
本文分享自微信公衆號 - 代碼隨想錄(code_thinking)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。