本書(shū)旨在幫助讀者筑牢數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ),提升職場(chǎng)競(jìng)爭(zhēng)力。本書(shū)代碼采用Java語(yǔ)言編寫(xiě),分為上、下兩篇,共15章。其中,第1~9章為上篇,講解數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ),為讀者全面梳理基本知識(shí),內(nèi)容涵蓋線性結(jié)構(gòu)、樹(shù)結(jié)構(gòu)、圖結(jié)構(gòu)、排序與查找、窮舉法、遞歸算法、貪心算法、動(dòng)態(tài)規(guī)劃、回溯法;第10~15章為下篇,收集了50多道經(jīng)典且有趣的大廠面試真題,針對(duì)每道題都給出了詳細(xì)的分析和解答,幫助讀者全面提升解決實(shí)際問(wèn)題的能力,同時(shí)為讀者準(zhǔn)備筆試、面試提供幫助。
本書(shū)堅(jiān)持夯實(shí)基礎(chǔ)、注重實(shí)踐、舉一反三的理念,內(nèi)容豐富翔實(shí)、妙趣橫生,講解深入淺出、清晰到位。希望能夠陪伴讀者在輕松愉快的氛圍中學(xué)習(xí)。
本書(shū)既可作為計(jì)算機(jī)相關(guān)專(zhuān)業(yè)的學(xué)生以及算法愛(ài)好者學(xué)習(xí)用書(shū),也可作為應(yīng)屆畢業(yè)生及社招人員筆試、面試的求職參考書(shū),還可作為培訓(xùn)機(jī)構(gòu)的教材。
全面系統(tǒng)的算法與數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)知識(shí)講解
豐富有趣的大廠面試題剖析及解題技巧總結(jié)
所有題目標(biāo)注星級(jí),方便讀者自我考量
講解細(xì)致,手把手教學(xué),小白也能輕松掌握
超多圖解,求解過(guò)程一目了然
提供完整代碼及測(cè)試程序,方便練習(xí)
在信息科技迅猛發(fā)展的今天,互聯(lián)網(wǎng)、5G、人工智能等已成為炙手可熱的行業(yè),這些行業(yè)憑借其光明的發(fā)展前景和令人羨慕的薪資水平,吸引著一屆又一屆的年輕人,而進(jìn)入這些行業(yè)的門(mén)檻也隨之水漲船高。記得在我畢業(yè)找工作時(shí),面試題目比今天容易很多,考查的內(nèi)容基本就是Java或C 的語(yǔ)法知識(shí)和基礎(chǔ)的編程題,最多有一兩道算法題壓軸,用以區(qū)分面試者的水平。但是現(xiàn)在大廠的面試題更側(cè)重于數(shù)據(jù)結(jié)構(gòu)和算法,認(rèn)為這樣更能考查面試者的綜合水平,包括基本的編程能力、計(jì)算機(jī)邏輯思維、數(shù)學(xué)功底,以及對(duì)數(shù)據(jù)結(jié)構(gòu)和算法本身的理解。所以,學(xué)好數(shù)據(jù)結(jié)構(gòu)和算法是通往大廠、獲取高薪的必由之路,大家應(yīng)該認(rèn)真對(duì)待。
如何才能學(xué)好數(shù)據(jù)結(jié)構(gòu)和算法呢?我認(rèn)為大道至簡(jiǎn):只要做到夯實(shí)基礎(chǔ)、注重實(shí)踐、舉一反三,就一定能學(xué)通弄懂。因此在寫(xiě)作本書(shū)的過(guò)程中,我力求將這三點(diǎn)貫穿始終,努力為廣大讀者呈現(xiàn)一本適合自學(xué)和自我提高的算法書(shū)。
夯實(shí)基礎(chǔ)是指要對(duì)數(shù)據(jù)結(jié)構(gòu)和算法最基礎(chǔ)的知識(shí)點(diǎn)有非常深刻的理解和認(rèn)識(shí)。這就像蓋大樓,地基必須夯實(shí)筑牢,否則蓋出的大樓不會(huì)穩(wěn)固。這似乎不言自明,但是往往容易被大家忽視,F(xiàn)在人們生活節(jié)奏加快,速成、抄近道的想法普遍存在,很多人希望通過(guò)背幾個(gè)模板、學(xué)幾個(gè)套路就把數(shù)據(jù)結(jié)構(gòu)和算法搞懂,這其實(shí)是不太可能的。任何知識(shí)體系的構(gòu)建都有其客觀規(guī)律,只有扎扎實(shí)實(shí)地把這些基礎(chǔ)的知識(shí)點(diǎn)學(xué)通透、弄明白,才能穩(wěn)扎穩(wěn)打、步步為營(yíng)。因此我在本書(shū)的上篇中用了相當(dāng)大的篇幅為讀者梳理和總結(jié)數(shù)據(jù)結(jié)構(gòu)和算法的基礎(chǔ)知識(shí),目的就是希望讀者在刷題之前能夠溫習(xí)和鞏固這些最基礎(chǔ)、最重要的內(nèi)容。只有這樣,我們構(gòu)建的知識(shí)體系大廈才能穩(wěn)固堅(jiān)硬,不但有利于應(yīng)聘職位,對(duì)于大家今后從事開(kāi)發(fā)和研究工作也有很多好處。
除了夯實(shí)基礎(chǔ),注重實(shí)踐也是學(xué)好數(shù)據(jù)結(jié)構(gòu)和算法的必要條件。學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)和算法的最終目標(biāo)是解決實(shí)際問(wèn)題,所以必須進(jìn)行大量的實(shí)踐和練習(xí),不斷加深理解,進(jìn)而提高水平。我在本書(shū)中為讀者整理和分析了大量的題目,旨在幫助讀者通過(guò)實(shí)踐和練習(xí)提高自身的水平。
大家在刷題的同時(shí),還應(yīng)該清楚地認(rèn)識(shí)到:題目是無(wú)窮無(wú)盡的,試圖窮舉出每一個(gè)題目是不可能的。我們?nèi)绾卧谟邢薜臅r(shí)間內(nèi)高效刷題,覆蓋盡可能多的知識(shí)點(diǎn)呢?答案就是舉一反三。對(duì)于一個(gè)問(wèn)題,我們不應(yīng)當(dāng)只局限于一個(gè)思路、一種解法,而是應(yīng)當(dāng)盡可能多地用不同的方法求解。本書(shū)中的題目分析就充分體現(xiàn)出舉一反三的特點(diǎn),很多題目并不拘泥于單一解法,而是采取由易到難、由低級(jí)到高級(jí)的方式給出多種解法,這樣讀者就可以通過(guò)一個(gè)問(wèn)題復(fù)習(xí)多個(gè)知識(shí)點(diǎn),學(xué)習(xí)效率也會(huì)顯著提高。
以上是我的經(jīng)驗(yàn)總結(jié),也是創(chuàng)作本書(shū)的核心理念。除此之外,與同類(lèi)圖書(shū)相比,本書(shū)還有以下亮點(diǎn)。
結(jié)構(gòu)清晰,內(nèi)容全面
本書(shū)分為上、下兩篇。上篇主要介紹數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)知識(shí),為讀者梳理數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ)知識(shí)以及常用的算法思想,方便讀者復(fù)習(xí)和鞏固已有知識(shí)、夯實(shí)理論基礎(chǔ),為后續(xù)刷題打下基礎(chǔ)。下篇主要介紹經(jīng)典的大廠面試題,通過(guò)妙趣橫生的數(shù)據(jù)結(jié)構(gòu)和算法題目幫助讀者鞏固基礎(chǔ)、開(kāi)闊思路,提高職場(chǎng)競(jìng)爭(zhēng)力。
實(shí)例豐富,講解到位
注重實(shí)踐是本書(shū)的創(chuàng)作理念和主要特色,書(shū)中包含大量編程實(shí)例,從上篇的案例分析到下篇的大廠面試題,每個(gè)題目都經(jīng)過(guò)精挑細(xì)選,很值得讀者學(xué)習(xí)研究。同時(shí)每個(gè)題目都使用星號(hào)(★)標(biāo)注其難度,從難度最小的一星(★)到難度最大的四星(★★★★),一目了然。除此之外,講解到位是本書(shū)的另一大特點(diǎn),不采用貼代碼式的講解,而是將每個(gè)題目的思考過(guò)程清晰地展示給讀者,力求深入淺出、把問(wèn)題講清講透,使讀者在看懂題目的同時(shí)學(xué)到思考問(wèn)題的正確方法,從而在遇到類(lèi)似問(wèn)題時(shí)能夠舉一反三、觸類(lèi)旁通。
題目經(jīng)典,妙趣橫生
本書(shū)中選取的題目多為經(jīng)典的數(shù)據(jù)結(jié)構(gòu)和算法題目,不但具有明確的針對(duì)性,也經(jīng)常被拿來(lái)當(dāng)作大廠的筆試或面試題目,因此具有很高的學(xué)習(xí)價(jià)值和實(shí)用價(jià)值。除此之外,本書(shū)中的題目還兼具趣味性,力求讓讀者對(duì)數(shù)據(jù)結(jié)構(gòu)和算法產(chǎn)生興趣,進(jìn)而不再畏懼難題,愿意思考和解決它們。
讀者可以關(guān)注我的微信公眾號(hào)算法匠人并在匠人作品中下載全書(shū)源代碼資源。讓我們共同切磋,一起提高。
由于本人水平有限,書(shū)中難免存在不足和紕漏之處,歡迎廣大讀者批評(píng)指正。
楊峰