怎樣應(yīng)對IT面試與筆試-(一)

1. 數(shù)據(jù)結(jié)構(gòu)與算法

  • 面試中對數(shù)據(jù)結(jié)構(gòu)和算法的考察就是手寫代碼解決具體題目
  • 這種解題的能力或者編程的能力是可以通過有意識的訓(xùn)練來提高的,即使你是一個菜到不行的菜鳥
  • 科學(xué)訓(xùn)練包括了有目的的重復(fù)性訓(xùn)練则酝、周期性總結(jié)
  • 下面章節(jié)中的示例代碼只是為了說明解題思路殉簸,更容易理解,所以他們不一定是最優(yōu)的

1.1 第一階段-重溫基本數(shù)據(jù)結(jié)構(gòu)

Tip: 我們大部分練習(xí)題目來自leetcode沽讹,請小伙伴們先行注冊一下般卑。
Tip: leetcode雖然現(xiàn)在已經(jīng)上線了中文網(wǎng)站,但還是建議大家使用原版爽雄,順便練習(xí)下英文理解能力

Note: 第一階段計劃我們通過嘗試解決一些簡單題目蝠检,幫大家熟悉常見的數(shù)據(jù)結(jié)構(gòu)及其表達方式

  • 我們會使用固定的流程(理解題目-畫圖-核心代碼-完善邊界條件-優(yōu)化)去解決這些問題,目的是想幫助小伙伴們一開始就建立一個比較良好的思維習(xí)慣挚瘟,解決一道題目的重點在于理清解題思路叹谁,對應(yīng)的代碼實現(xiàn)是一個熟能生巧的過程。有些小伙伴一見到題目乘盖,就急急忙忙去直接思考代碼怎么實現(xiàn)焰檩。在初級階段,我們不建議這么做订框。
    Note: 小伙伴們的主要任務(wù)是把下面題目代碼敲一遍提交到leetcode
    Note: 這一階段你可以過的比較放松析苫,琢磨明白下面題目的示意圖和代碼的對應(yīng)關(guān)系就可以了。

1.1.1 數(shù)組

217. Contains Duplicate

判斷一個整數(shù)數(shù)組是否包含重復(fù)元素,包含返回true衩侥,否則返回false

1.舉例子-畫圖-解題思路
217.png

總體思路是:將集合中元素兩兩比較

  • 從第一個元素(5)開始依次與后面元素進行比較国旷,5-6、5-7顿乒、5-6议街,沒有重復(fù)元素
  • 從第二個元素(6)開始依次與后面元素進行比較,6-7璧榄、6-6特漩,發(fā)現(xiàn)相等元素(6),返回true
2. 寫核心邏輯代碼

通常涉及無序數(shù)組nums的兩兩元素比較骨杂,可以直接應(yīng)用下面的雙重循環(huán)框架:

for (int i = 0; i < nums.size(); ++i) 
{
    for (int j = i+1; j < nums.size(); ++j) 
    {
        //判斷邏輯
    }
}

利用上個模板我們直接寫出本題核心代碼

for (int i = 0; i < nums.size(); ++i) 
{
    for (int j = i+1; j < nums.size(); ++j) 
    {
        // 遇到相等的元素直接返回true
        if (nums[j] == nums[i]) return true;  
    }
}
3. 完善邊界條件并提交代碼

除了核心邏輯外涂身,邊界條件的考慮是必不可少的一個環(huán)節(jié),例如nums沒有元素或者只有一個元素時候我們的代碼應(yīng)該返回什么結(jié)果搓蚪。加上邊界條件后的代碼如下:

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        int n = nums.size();
        if(n <= 1) return false;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < i; ++j) {
                if (nums[j] == nums[i]) return true;  
            }
        }
        return false;
    }
};

上述代碼按Submit Solution按鈕后蛤售,會提示: Submission Result: [Time Limit Exceeded],意思是在驗證一些特殊case時候算法超時了妒潭,需要我們優(yōu)化算法

4. 更優(yōu)方案

Tip: 上面的情況有些類似我們面試時候的套路:

面試套路.png

所以我們會想:如果在一個有序數(shù)組中查找重復(fù)數(shù)字是否能提高效率悴能?


217-op.png

可以看到,不同于上面的雙重循環(huán)雳灾,排序后只需要一次遍歷中比較相鄰元素是否相等就可以了漠酿。

class Solution {
public:
    bool containsDuplicate(vector<int>& nums) {
        //邊界條件
        if(nums.size() <= 1)
            return false;
        //先對無序數(shù)組排序
        sort(nums.begin(),nums.end());
        //一次遍歷,每個元素都與它前面的元素進行對比
        for(int i = 1; i < nums.size(); ++i)
        {
            if(nums[i] == nums[i -1])
                return true;
        }
        return false;
    }
};

提交上面的代碼谎亩,可以得到 Submission Result: [Accepted]的提示炒嘲,意味著你已經(jīng)在leetcode上提交了第一段驗證通過的代碼,恭喜下自己吧

劇透: 后面我們還會看到使用hash table來解決上面這個問題

5. 總節(jié)
  • 我們知道了數(shù)組這一數(shù)據(jù)結(jié)構(gòu)的表達方式(vector)
  • 我們學(xué)到了第一個常用技巧:先排序再處理
  • 我們使用了一個最簡單的算法:雙重循環(huán)

怎樣應(yīng)對IT面試與筆試-(一)
怎樣應(yīng)對IT面試與筆試-(二)
怎樣應(yīng)對IT面試與筆試-(三)
怎樣應(yīng)對IT面試與筆試-(四)
怎樣應(yīng)對IT面試與筆試-(五)
怎樣應(yīng)對IT面試與筆試-(五-1)
怎樣應(yīng)對IT面試與筆試-(六)
怎樣應(yīng)對IT面試與筆試-(七)
怎樣應(yīng)對IT面試與筆試-(八)
怎樣應(yīng)對IT面試與筆試-(九)
怎樣應(yīng)對IT面試與筆試-(十)
怎樣應(yīng)對IT面試與筆試-(十一)
怎樣應(yīng)對IT面試與筆試-(十二)
怎樣應(yīng)對IT面試與筆試-(十三)
怎樣應(yīng)對IT面試與筆試-(十四)
怎樣應(yīng)對IT面試與筆試-(十五)
怎樣應(yīng)對IT面試與筆試-(十六)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匈庭,一起剝皮案震驚了整個濱河市夫凸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌阱持,老刑警劉巖夭拌,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異紊选,居然都是意外死亡啼止,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門兵罢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來献烦,“玉大人,你說我怎么就攤上這事卖词」牵” “怎么了吏夯?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長即横。 經(jīng)常有香客問我噪生,道長,這世上最難降的妖魔是什么东囚? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任跺嗽,我火速辦了婚禮,結(jié)果婚禮上页藻,老公的妹妹穿的比我還像新娘桨嫁。我一直安慰自己,他們只是感情好份帐,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布璃吧。 她就那樣靜靜地躺著,像睡著了一般废境。 火紅的嫁衣襯著肌膚如雪畜挨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天噩凹,我揣著相機與錄音巴元,去河邊找鬼。 笑死驮宴,一個胖子當(dāng)著我的面吹牛务冕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幻赚,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼臊旭!你這毒婦竟也來了落恼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤离熏,失蹤者是張志新(化名)和其女友劉穎佳谦,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滋戳,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钻蔑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了奸鸯。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咪笑。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖娄涩,靈堂內(nèi)的尸體忽然破棺而出窗怒,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布扬虚,位于F島的核電站努隙,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辜昵。R本人自食惡果不足惜荸镊,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堪置。 院中可真熱鬧躬存,春花似錦、人聲如沸晋柱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽雁竞。三九已至钦椭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間碑诉,已是汗流浹背彪腔。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留进栽,地道東北人德挣。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像快毛,于是被迫代替她去往敵國和親格嗅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組 記錄《劍指offer》中所有關(guān)于數(shù)組的題目唠帝,以及LeetCode中的相似題目 相關(guān)題目列表 說明 由于簡書...
    wenmingxing閱讀 1,517評論 1 12
  • 前言 2. 實現(xiàn) Singleton 3. 數(shù)組中重復(fù)的數(shù)字 4. 二維數(shù)組中的查找 5. 替換空格 6. 從尾到...
    Observer_____閱讀 2,922評論 0 1
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法屯掖,類相關(guān)的語法,內(nèi)部類的語法襟衰,繼承相關(guān)的語法贴铜,異常的語法,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • 我有一家咖啡館 他叫初之咖啡館 人之初的初 在這里沒有任何煩惱 人們在這里能夠找到最初的自己 這就是咖啡館的名字由...
    語墨清書閱讀 286評論 0 0
  • 三月瀑晒,春意萌動绍坝! 今天是三月的首日,其實每天或多或少總有大大小小的感觸苔悦,我知道那是我的自我覺察轩褐,就如原先...
    彩雪麗閱讀 182評論 0 0