亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

leetcode 100 斬!回顧

wyk1184 / 3036人閱讀

摘要:斬從第題開始,到現(xiàn)在也差不多快一年了,回顧紀(jì)念一下。當(dāng)時(shí)對(duì)回溯動(dòng)態(tài)規(guī)劃也都只是上課的時(shí)候?qū)W過,也并不熟練。最經(jīng)典的例子就是斐波那契數(shù)列了,求第項(xiàng)數(shù)列的值。

leetcode 100 斬!從第 1 題開始,到現(xiàn)在也差不多快一年了,回顧紀(jì)念一下。

為什么開始刷題?

從大一就知道了 leetcode,但刷題總是三天打魚,兩天曬網(wǎng),會(huì)發(fā)現(xiàn)刷過的題,隔一段時(shí)間再看還是需要很久才能再想起來,于是就萌發(fā)了刷一題總結(jié)一題的想法。

另一方面,leetcode 上的 discuss 里一些解,有時(shí)候講解的很少,甚至只丟一些代碼,對(duì)于我等這種菜鳥有時(shí)候看的太廢勁了,所以不如自己把各種解法都理清楚,然后詳細(xì)的總結(jié)出來,也方便其他人更好的理解。

剛開始的感覺

大一的時(shí)候,聽過 ACM,然后暑假也去學(xué)校的 ACM 集訓(xùn)試了試,但當(dāng)時(shí)基礎(chǔ)太差了,棧和隊(duì)列都不知道是什么,所以也就沒有走上 ACM 的道路。之后就各種學(xué)安卓、web、后端的應(yīng)用開發(fā)的一些東西了。后來準(zhǔn)備開始刷題是大四畢業(yè)的時(shí)候了吧。

當(dāng)時(shí)對(duì)回溯、動(dòng)態(tài)規(guī)劃也都只是上課的時(shí)候?qū)W過,也并不熟練。開始幾題的時(shí)候,也都很慢,很多都自己想不出來。然后就去看別人的題解??赐暌院?,就什么都不看,然后按自己的思路再寫一遍代碼。

尤其是第 5 題,求最長(zhǎng)回文序列,現(xiàn)在都印象深刻,記得當(dāng)時(shí)用了好幾天才把所有解法總結(jié)了出來。

所以大家如果想刷題的話,也不用怕自己基礎(chǔ)不好,大不了哪些名詞不會(huì)就去查,一點(diǎn)點(diǎn)積累就可以,重要的是開始和堅(jiān)持。

現(xiàn)在的感覺

從開始可能只是覺得該刷一刷題,到現(xiàn)在可能真的是愛上了刷題。

現(xiàn)在刷題基本可以想出一種思路,有時(shí)候甚至和最優(yōu)解想到了一起,還會(huì)想出一些別人沒有想到的解法,這種成就感可能就是打游戲超神的感覺吧,哈哈。

此外,看 discuss 的時(shí)候,每當(dāng)看到令人拍案稱奇的思路的時(shí)候,真的是讓人心曠神怡,開心的不得了,就像中了彩票一樣的開心,趕快去和同學(xué)分享。

有時(shí)候也會(huì)看到一些讓人捧腹的評(píng)論,題目是輸入一個(gè)字符串,輸出所有可能的 ip 地址。

Input: "25525511135"
Output: ["255.255.11.135","255.255.111.35"]

刷題的收獲

在總結(jié)的過程中,因?yàn)榱η蠼o他人講懂,在理清思路的動(dòng)機(jī)的過程中,會(huì)發(fā)現(xiàn)之前的想法可能是錯(cuò)的,會(huì)總結(jié)著總結(jié)著就明白了另一種解法,或者產(chǎn)生新的想法,或者明白各個(gè)解法相互之間的聯(lián)系,會(huì)比僅僅 AC 多出很多收獲。

從理清他人的想法,再到自己寫出代碼,再到把各個(gè)解法用自己的理解串起來,會(huì)有一種「紙上得來終覺淺,絕知此事要躬行」的感覺。有時(shí)候雖然大的框架有了,但是小的細(xì)節(jié)方面還是需要自己去體會(huì)。為什么加這個(gè) if?為什么是小于等于?每一句代碼的產(chǎn)生都是有原因的,絕不會(huì)是可有可無的代碼。

所以雖然一道題從看題,理解,自己考慮,看別人解法,到重新實(shí)現(xiàn),再到總結(jié)出來,可能需要 3、4 個(gè)小時(shí),甚至 5、6 個(gè)小時(shí)或者更多,但我覺得是值得的。

此外,也有很多人加自己的微信過來亦或是感謝自己,亦或是指出錯(cuò)誤,亦或是詢問問題,亦或是沒說過話的,哈哈。有微軟、谷歌、百度、阿里、騰訊的大佬,有各個(gè)大學(xué)的學(xué)生,甚至巧的是還能加上高中的校友,世界真小,哈哈。

上邊是最近加的一些人,每次收到別人的稱贊自己也會(huì)很開心。此外,博客是直接放在 github 上的,目前也有 280 stars 了,是自己 github 上 start 數(shù)最多的項(xiàng)目了,說來也慚愧,希望以后自己努力可以有一個(gè)好的開源項(xiàng)目。

刷題的理解

一些人可能會(huì)糾結(jié)用什么語言去刷,其實(shí)沒必要糾結(jié)的。刷題需要考慮的是算法,而不是語言。算法就像是從家里到超市該怎么走?出門左拐,右拐直走….而語言是我們選擇的交通工具,騎車?步行?開車?平衡車?每種交通工具都有自己的優(yōu)點(diǎn)和缺點(diǎn),語言也是如此。而好的算法可能更像是,我們偶然發(fā)現(xiàn)了一條近路,降低了我們的時(shí)間復(fù)雜度或者是空間復(fù)雜度。

刷了 100 道題了,我覺得必須要掌握的就是遞歸的思想了,利用這個(gè)思想可以解大部分的題了。計(jì)算機(jī)擅長(zhǎng)的就是記憶以及速度,而遞歸可以把這兩個(gè)優(yōu)勢(shì)發(fā)揮到極致。遇到問題以后,我們可以考慮如何把大問題分解成小問題,想出來以后,代碼很容易就出來了。

此外,一些遞歸可以用動(dòng)態(tài)規(guī)劃的思想改寫,從而優(yōu)化遞歸壓棧所消耗的時(shí)間,遞歸是頂部到底部再回到頂部,而動(dòng)態(tài)規(guī)劃通過存儲(chǔ),直接從底部到頂部解決問題。

最經(jīng)典的例子就是斐波那契數(shù)列了,求第 n 項(xiàng)數(shù)列的值。

斐波那契數(shù)列,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34 …… 在數(shù)學(xué)上,斐波納契數(shù)列定義如下:F ( 0 ) = 0,F(xiàn) ( 1 ) = 1 , F ( n ) = F ( n - 1 ) + F ( n - 2 )(n >= 2,n ∈ N*);

如果用遞歸的思想去寫,代碼簡(jiǎn)潔而優(yōu)雅。

long Fibonacci(int n){
   if (n == 0)
        return 0;
   else if (n == 1)
        return 1;
   else
       return Fibonacci(n-1) + Fibonacci(n-2);
}

當(dāng)然,這樣的話太慢了,優(yōu)化的話,就是把遞歸過程的結(jié)果保存起來,或者就是改寫成動(dòng)態(tài)規(guī)劃,最強(qiáng)的是其實(shí)是有一個(gè)公式的,直接利用公式就可以。

此外,還有一些題目就是根據(jù)題目的理解去寫代碼了,沒有什么特殊的技巧。

未來的打算

當(dāng)然是繼續(xù)刷下去了,很開心,每天不刷一刷題會(huì)不習(xí)慣的,希望大家也早日感受到刷題的樂趣,哈哈。

在線地址:https://leetcode.wang,域名也比較好記,希望對(duì)大家會(huì)有幫助。

我是用 gitbook 搭建的,我覺得上邊「搜索」的插件很好用,可以直接根據(jù)關(guān)鍵字搜出來自己想做的題。

知乎專欄也會(huì)同步更新:https://zhuanlan.zhihu.com/le...。

越努力,越幸運(yùn),共勉。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75366.html

相關(guān)文章

  • 極簡(jiǎn)爬蟲攻防戰(zhàn)紀(jì)要

    摘要:極簡(jiǎn)爬蟲攻防戰(zhàn)紀(jì)要爬蟲是構(gòu)建搜索引擎的基礎(chǔ)負(fù)責(zé)抓取網(wǎng)頁信息并對(duì)網(wǎng)頁識(shí)別分類及過濾。爬蟲方終于鎖定了第一場(chǎng)戰(zhàn)役的勝局由于斷崖式技術(shù)的出現(xiàn),反爬方在瀏覽器識(shí)別戰(zhàn)役上望風(fēng)披靡。經(jīng)過反爬方的精心運(yùn)作,逐漸有效削弱了敵方的攻勢(shì)。 極簡(jiǎn)爬蟲攻防戰(zhàn)紀(jì)要 ? ??爬蟲是構(gòu)建搜索引擎的基礎(chǔ), 負(fù)責(zé)抓取網(wǎng)頁信息并對(duì)網(wǎng)頁識(shí)別、分類及過濾。我們熟識(shí)的電商、搜索、新聞及各大門戶網(wǎng)站都有強(qiáng)大的爬蟲集群在每...

    elliott_hu 評(píng)論0 收藏0
  • LeetCode】貪心算法--劃分字母區(qū)間(763)

    摘要:寫在前面今天這篇文章是貪心算法系列的第三篇?jiǎng)澐肿帜竻^(qū)間。前文回顧貪心算法分發(fā)糖果刷題匯總匯總貼今日題目字符串由小寫字母組成。返回一個(gè)表示每個(gè)字符串片段的長(zhǎng)度的列表。示例輸入輸出解釋劃分結(jié)果為。每個(gè)字母最多出現(xiàn)在一個(gè)片段中。 寫在前面 今天這篇文章是貪心算法系列的第三篇--劃分字母區(qū)間。 前文回顧: 【LeetCode】貪心算法--分發(fā)糖果(135) 刷題匯總: 【LeetCode】匯總...

    honhon 評(píng)論0 收藏0
  • Leetcode】79.單詞搜索

    摘要:題目給定一個(gè)二維網(wǎng)格和一個(gè)單詞,找出該單詞是否存在于網(wǎng)格中。單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中相鄰單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使用。 題目 給定一個(gè)二維網(wǎng)格和一個(gè)單詞,找出該單詞是否存在于網(wǎng)格中。 單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中相鄰單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允...

    Caicloud 評(píng)論0 收藏0
  • Leetcode】79.單詞搜索

    摘要:題目給定一個(gè)二維網(wǎng)格和一個(gè)單詞,找出該單詞是否存在于網(wǎng)格中。單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中相鄰單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許被重復(fù)使用。 題目 給定一個(gè)二維網(wǎng)格和一個(gè)單詞,找出該單詞是否存在于網(wǎng)格中。 單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中相鄰單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允...

    ruicbAndroid 評(píng)論0 收藏0
  • 前端跳槽面試算法——?jiǎng)討B(tài)規(guī)劃

    摘要:我記得大三參加騰訊的校招面試時(shí)只準(zhǔn)備了幾種常見的排序算法就足以應(yīng)對(duì)了,然而今年包括今日頭條在內(nèi)的多家大廠的前端筆試題目中都出現(xiàn)了貪心算法動(dòng)態(tài)規(guī)劃分治算法等進(jìn)階性的算法題目。本篇博客參考今日頭條銀國徽老師的《js版數(shù)據(jù)結(jié)構(gòu)與算法》Part1改編自《漫畫算法》原作者:程序員小灰前言眾所周知,與后臺(tái)開發(fā)人員相比,算法是我們前端開發(fā)人員的一個(gè)弱項(xiàng)。而近兩年隨著互聯(lián)網(wǎng)行業(yè)競(jìng)爭(zhēng)愈發(fā)激烈,市場(chǎng)上對(duì)前端崗位...

    mushang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

wyk1184

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<