這五道數組相關的面試題,你必定要會!

關於代碼的一切盡在「代碼隨想錄


在算法面試中,數組是必考的基礎數據結構
程序員

其實數據的題目在思想上通常比較簡單的,一想就是這麼一回事面試

可是若是不熟練的話,用代碼實現就不是那麼回事了,難就難在代碼實操上算法

這裏呢 我從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

這是一道模擬題,就是模擬螺旋矩陣

這道題絕對是面試中的常客,特別是筆試的時候

並且這道題不少同窗就算作過,過一段時間,仍是作這道題目 ,仍是作很差。

解題的關鍵在於在循環遍歷的時候須要定義好本身的循環不變量

這道題目是數組面試題中最多見的一個類型之一

總結

這五道題是數組中很是典型的題目

若是這幾道題目尚未作過,還等啥,趕忙搞起啊!


往期 精彩回顧




程序員算法面試中,必須掌握的數組理論知識
程序員爲何要使用Markdown
二分法其實很簡單,爲何總是寫不對!!

我的微信,歡迎來撩!

我就知道你[在看]

本文分享自微信公衆號 - 代碼隨想錄(code_thinking)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索