99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

新手如何有效的刷算法題(LeetCode)

算法與數(shù)據(jù)結(jié)構(gòu) ? 來源:五分鐘學(xué)算法 ? 2020-06-03 17:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

作為一名非科班出身的程序員,我是參加工作之后才開始接觸算法,學(xué)算法至今有將近五年的時(shí)間,期間輸出文字約 100 多萬,從算法小白到寫出百萬閱讀的算法文章,這一路歷程,有心酸也有掌聲。

過往歷歷在目,沒有誰比我更了解算法小白的焦慮與迷茫。

每每在公眾號后臺(tái)看到讀者留言求教時(shí),我都在想:我能為他們做點(diǎn)什么。

我決定把我曾經(jīng)踩過的坑以及總結(jié)出來的經(jīng)驗(yàn)毫無保留的分享給你,希望能為你撥開迷霧。

這些經(jīng)驗(yàn)并不會(huì)適合每個(gè)人,但或許也能對你有所啟發(fā)。

今天這篇文章聊的話題就是新手如何有效的刷算法題(LeetCode)。

如果你想要開始刷題,那么第一步就是:打開 LeetCode 官網(wǎng),點(diǎn)擊標(biāo)簽,選擇一道順眼的題目開始刷。

注意,在這過程中,不要左思右盼,不要去搜索與思考到底是刷 LeetCode 好還是去牛客網(wǎng)刷劍指 Offer 好。

我作為一名算法小白的時(shí)候,就犯了這個(gè)錯(cuò)誤:在粗略的了解基本的數(shù)據(jù)結(jié)構(gòu)與算法后,準(zhǔn)備開始刷題,總想著找一個(gè)最有效最好的刷題平臺(tái)。

一會(huì)在 LeetCode 題解區(qū)逛逛,一會(huì)在??途W(wǎng)看看面經(jīng),結(jié)果就是整個(gè)人煩躁不安,焦慮迷茫,題沒有刷幾道,羨慕嫉妒恨卻增加了幾分:別人的代碼怎么這么簡潔 ?別人的 Offer 怎么這么亮眼?

經(jīng)過痛定思定之后,我開始自我剖析自己想好好刷題卻無效的原因:

1、沒有接受自己是算法小白的事實(shí)

我那時(shí)候只是按圖索驥般的稍微系統(tǒng)的接觸了基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)與算法知識,根本沒有真正的利用這些知識去處理問題。

在刷題的過程中,總想證明自己可以的,別人可以寫成簡潔高效的解題方法,我也要!于是去不停的找題證明自己,結(jié)果就是越刷越?jīng)]有效果,自己根本就看不懂題目考察的數(shù)據(jù)結(jié)構(gòu)與思想。

整個(gè)人完全奔潰,不刷題了,不準(zhǔn)備算法面試了,不準(zhǔn)備跳槽了!

后來我不停的告誡自己:作為一名非科班的程序員,肯定比不上他們呀,如果隨隨便便的學(xué)了一點(diǎn)就能刷題順利,那別人大學(xué)四年不白學(xué)了!

所以前期先接受自己的思考方式,暴力解法其實(shí)也是一種有效的解法。

2、沒有合理的刷題

我只是盲目的追求刷題的數(shù)量,即使刷了 200 道,腦中依舊一團(tuán)漿糊。

后來才明白,吃透一道題目比亂刷十道題目更有價(jià)值。

經(jīng)過不斷的摸索與試驗(yàn),形成了自己的一套刷題路徑。

自己的解法

網(wǎng)上好的解法

自己的解法可以優(yōu)化的地方

不停的優(yōu)化

尋找相同的題型

總結(jié)

每一個(gè)題目都經(jīng)過至少一遍這樣的迭代,徹底吃透一道題進(jìn)而掌握一種題型。

以一道極其簡單的動(dòng)態(tài)規(guī)劃題為例 ,LeetCode 第 70 號問題:爬樓梯。

當(dāng)時(shí)的我根本不知道動(dòng)態(tài)規(guī)劃的相關(guān)概念,什么狀態(tài),什么轉(zhuǎn)移方程,通通沒聽過。

沒錯(cuò),當(dāng)時(shí)就那么菜!

二話不說,直接使用暴力解法。

classSolution{ publicintclimbStairs(intn){ returncalcWays(n); } privateintcalcWays(intn){ if(n==1)return1; if(n==2)return2; returncalcWays(n-1)+calcWays(n-2); } }

很明顯,無腦的遞歸暴力解法包含了大量的重復(fù)計(jì)算,提交上去直接標(biāo)紅提示超出時(shí)間限制。

后來看了網(wǎng)上高票答案的分析,知道了備忘錄的概念,于是很容易寫出優(yōu)化后的代碼。

//采用備忘錄的方式來存子問題的解以避免大量的重復(fù)計(jì)算 classSolution{ int[]memo; publicintclimbStairs(intn){ memo=newint[n+1]; returncalcWays(n); } privateintcalcWays(intn){ if(n==1)return1; if(n==2)return2; if(memo[n]==0) memo[n]=calcWays(n-1)+calcWays(n-2); returnmemo[n]; } }

再后來,發(fā)現(xiàn)備忘錄是自頂 向下的方式,稍許變動(dòng),修改為自低 向上的遞推方式就是動(dòng)態(tài)規(guī)劃的形式。

classSolution{ publicintclimbStairs(intn){ int[]memo=newint[n+1]; memo[0]=1; memo[1]=1; for(inti=2;i<=?n;?i++){? ????????????memo[i]?=?memo[i-1]?+?memo[i-2];? ????????}? ????????return?memo[n];? ????}? }

按照這樣的刷題路徑下來,發(fā)現(xiàn)對這類題型有了初步的思考途徑,有了發(fā)力點(diǎn),再也不會(huì)一籌莫展:看題懵逼半小時(shí),Coding 只會(huì)按空格。

徹底搞懂這題后,就需要找到類似的題型,然后不斷的重復(fù)練習(xí):最小路徑和、整數(shù)拆分、完全平方數(shù)、解碼方法、不同路徑、不同路徑 II。

通過這些練習(xí),尋找題目中的共同點(diǎn),為什么這類題型都可以這樣思考呢?

慢慢的,知道了最優(yōu)子結(jié)構(gòu)、狀態(tài)轉(zhuǎn)移方程、重疊子問題的概念,不知不覺動(dòng)態(tài)規(guī)劃的知識點(diǎn)已經(jīng)掌握了 80%。

再遇到更高難度的動(dòng)態(tài)規(guī)劃的題目時(shí),心里也明白,一時(shí)半會(huì)沒做成無法就是最優(yōu)子結(jié)構(gòu)、狀態(tài)轉(zhuǎn)移方程、重疊子問題沒有理清楚。

這樣長期堅(jiān)持下來,接觸新的題型時(shí)也可以從容不迫的思考。

后記

如果說成為大神有什么訣竅的話,那就是相信時(shí)間的力量,每天進(jìn)步一點(diǎn)就夠了!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4710

    瀏覽量

    95378
  • leetcode
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    2451

原文標(biāo)題:新手如何有效的刷算法題(LeetCode)

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    無位置傳感器無直流電機(jī)最大轉(zhuǎn)矩控制

    摘要:超前或滯后換相會(huì)造成無直流電機(jī)(BLDCM)輸出轉(zhuǎn)矩的減小和系統(tǒng)效率的降低。以平均電磁轉(zhuǎn)矩最大化為目標(biāo),提出了一種基于擴(kuò)展卡爾曼濾波算法的無直流電機(jī)最佳換相時(shí)刻估算方法。該方法建立了平均
    發(fā)表于 07-10 16:41

    直流電機(jī)雙閉環(huán)控制的仿真研究

    摘 要:為了便于對無直流電機(jī)的運(yùn)行特性和控制策略的研究,文章詳細(xì)的介紹了無直流電機(jī)工作原理和數(shù)學(xué)模型,提出無直流電機(jī)的控制策略,采用電流環(huán)為內(nèi)環(huán),速度環(huán)為外環(huán)的雙閉環(huán)控制,并根據(jù)數(shù)學(xué)模型搭建
    發(fā)表于 07-08 18:33

    直流電機(jī)逆變器故障診斷仿真研究

    的薄弱環(huán)節(jié),其可靠性問題一直沒有得到充分解決。而最新研究也表明:變頻調(diào)速系統(tǒng)中功率變換器故障占整個(gè)驅(qū)動(dòng)系統(tǒng)故障的82.5%。因此,有效防止逆變器故障是提高無直流電機(jī)變頻調(diào)速系統(tǒng)運(yùn)行安全性、可靠性的根本
    發(fā)表于 07-07 18:31

    直流電機(jī)模糊自適應(yīng)PID控制的研究

    摘要:為了提高無直流電機(jī)控制系統(tǒng)的動(dòng)、靜態(tài)性能,將模糊控制結(jié)合PID控制算法應(yīng)用到無直流電機(jī)速度控制系統(tǒng)中。在分析了無直流電機(jī)速度控制系統(tǒng)的基礎(chǔ)上,利用PSIM與MATLAB/S
    發(fā)表于 07-07 18:29

    直流電機(jī)模糊PI控制系統(tǒng)建模與仿真

    。利用該模型進(jìn)行了電機(jī)動(dòng)靜態(tài)性能的仿真研究,仿真結(jié)果與理論分析一致,表明讀方法建立的 BLDCM控制系統(tǒng)仿真模型合理、有效。該模型簡單、直觀、參數(shù)易于修改和替換,可方便地用于其他控制算法仿真研究。 純
    發(fā)表于 07-07 18:25

    直流電機(jī)濾波器設(shè)計(jì)方法研究

    直流電機(jī)(BLDCM)以其輸出轉(zhuǎn)矩大,控制簡單的優(yōu)點(diǎn)而被廣泛的應(yīng)用“-。但是,位置傳感器的存在限制了 BLDCM的應(yīng)用。因而,越來越多的研究考慮利用電機(jī)的端電壓和電流通過計(jì)算間接得到轉(zhuǎn)子的位置
    發(fā)表于 07-07 18:22

    直流電機(jī)抗飽和變結(jié)構(gòu)PI控制研究

    的積分 windup現(xiàn)象進(jìn)行了分析,并將抗飽和變結(jié)構(gòu) P 控制算法應(yīng)用到 BLDCM 電流滯環(huán)控制系統(tǒng)的轉(zhuǎn)速調(diào)節(jié)器中。為驗(yàn)證采用控制方法的有效性,在 MATLAB/Simu.link 仿真平臺(tái)下搭建
    發(fā)表于 06-27 16:51

    直流電機(jī)改進(jìn)型直接轉(zhuǎn)矩控制研究

    的無直流電機(jī)控制,定子鏈可近似認(rèn)為保持不變。然而,對磁鏈幅值的控制將會(huì)改變電機(jī)繞組的固定導(dǎo)通方式,僅通過控制定子磁鏈旋轉(zhuǎn)速度就可以實(shí)現(xiàn)電機(jī)的有效控制。在此基礎(chǔ)上提出了一種新穎的無直流電機(jī)直接轉(zhuǎn)矩
    發(fā)表于 06-27 16:45

    直流電機(jī)電流測量的探究

    摘要 :近幾年,無直流電機(jī)在工業(yè)控制領(lǐng)域的應(yīng)用越來越廣泛,而有效的電流測量是控制方法實(shí)現(xiàn)的前提,也是提高控制性能的基礎(chǔ)。本文基于 TIS320LF2407ADSP 控制器,對無直流電機(jī)
    發(fā)表于 06-26 13:45

    雙饋異步電機(jī)潮流建模和收斂性研究

    的 BDFM初值算法,給出IEEERTS系統(tǒng)中 BDFM參數(shù)計(jì)算結(jié)果,以驗(yàn)證所提 BDFM潮流算法的可行性和正確性。 純分享帖,點(diǎn)擊下方附件免費(fèi)獲取完整資料~~~ *附件:無雙饋異步電機(jī)潮流建模和收斂性
    發(fā)表于 06-25 13:12

    改進(jìn)的BP網(wǎng)絡(luò)PID控制器在無直流電機(jī)中的應(yīng)用

    通過分析學(xué)習(xí)速率對BP算法的影響,提出一種分層調(diào)整學(xué)習(xí)速率的改進(jìn)BP 網(wǎng)絡(luò)算法,并把該方法設(shè)計(jì)成 PID控制器應(yīng)用在無直流電機(jī)控制系統(tǒng)中,仿真結(jié)果驗(yàn)證了基于改進(jìn)的 BP 網(wǎng)絡(luò)的PID控制器
    發(fā)表于 05-28 15:42

    低噪革命!FOC 算法賦能無破壁機(jī)方案新飛躍

    電機(jī)驅(qū)動(dòng)技術(shù)的引入,更是讓破壁機(jī)在性能、效率以及用戶體驗(yàn)上實(shí)現(xiàn)了質(zhì)的飛躍。本文將從電機(jī)特性、功率表現(xiàn)、噪音控制等方面,深入剖析220V無刷電機(jī)驅(qū)動(dòng)破壁機(jī)的驅(qū)動(dòng)方案,重點(diǎn)突出低速大扭矩特性以及?FOC?控制算法的應(yīng)用優(yōu)勢。
    的頭像 發(fā)表于 04-14 17:04 ?446次閱讀
    低噪革命!FOC <b class='flag-5'>算法</b>賦能無<b class='flag-5'>刷</b>破壁機(jī)方案新飛躍

    Raspberry Pi樹莓派新手指南

    電子發(fā)燒友網(wǎng)站提供《Raspberry Pi樹莓派新手指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-23 17:05 ?2次下載

    探索 MS37549 直流無馬達(dá)驅(qū)動(dòng)方案的奧秘

    方案的神奇之處。 一、MS37549 直流無馬達(dá)驅(qū)動(dòng)方案的簡介 MS37549 直流無馬達(dá)驅(qū)動(dòng)方案是一種高效、可靠且性能卓越的技術(shù)解決方案。它采用了先進(jìn)的控制算法和電路設(shè)計(jì),能夠?qū)崿F(xiàn)對直流無
    的頭像 發(fā)表于 10-18 17:55 ?590次閱讀

    發(fā)電機(jī)是無好還是有

    發(fā)電機(jī)選擇無還是有,主要取決于具體的應(yīng)用場景和需求。以下是對兩種發(fā)電機(jī)類型的比較: 一、有發(fā)電機(jī)的特點(diǎn) 價(jià)格與成本 :有發(fā)電機(jī)通常價(jià)格較為實(shí)惠,后期維護(hù)和修理相對簡單,成本也較
    的頭像 發(fā)表于 09-03 10:51 ?3832次閱讀