推薦一位實力超強的平安前端算法大佬:瓶子君

今天給大家推薦一位平安大佬:前端瓶子君,一個專注於前端開發的小瓶子,五年大廠開發經驗,掘金優秀作者。

「前端進階算法」系列是她4月初發起的活動,從 0 到 1 構建完整的前端數據結構與算法體系。這是一個專注於前端算法的系列,針對於現在市場上大多數的算法資料都集中於後端,而前端算法資料都集中於 leetcode,沒有和前端(JS框架原理、瀏覽器、HTTP、V8等)進行緊密的結合。

目前已更新了九篇算法文章(點擊可查看):

四篇交流羣刷題總結(點擊可查看):

五十道題目(題目僅僅會在「前端進階算法集訓營」裏發佈,每個工作日早 9: 00),以下爲部分截取:

數組篇

  • 圖解leetcode88:合併兩個有序數組

  • 騰訊:數組扁平化、去重、排序

  • leetcode349:給定兩個數組,編寫一個函數來計算它們的交集

  • 華爲&leetcode146:設計和實現一個LRU(最近最少使用)緩存機制

  • 阿里算法題:編寫一個函數計算多個數組的交集

鏈表

  • leetcode21:合併兩個有序鏈表

  • 有贊&leetcode141:判斷一個單鏈表是否有環

  • 圖解leetcode206:反轉鏈表

  • leetcode876:求鏈表的中間結點

  • leetcode19:刪除鏈表倒數第 n 個結點

  • 圖解字節&leetcode160:編寫一個程序,找到兩個單鏈表相交的起始節點

字符串

  • 字節&leetcode151:翻轉字符串裏的單詞

  • 圖解拼多多&leetcode14:最長公共前綴(LCP)

  • 百度:實現一個函數,判斷輸入是不是迴文字符串

  • 字節&Leetcode3:無重複字符的最長子串

  • Facebook&字節&leetcode415: 字符串相加

  • 字節&leetcode155:最小棧(包含getMin函數的棧)

  • 圖解騰訊&嗶哩嗶哩&leetcode20:有效的括號

  • leetcode1047:刪除字符串中的所有相鄰重複項

  • leetcode1209:刪除字符串中的所有相鄰重複項 II

  • 面試真題:刪除字符串中出現次數 >= 2 次的相鄰字符

隊列

  • 劍指offer09:用兩個棧實現隊列

  • leetcode239:滑動窗口最大值問題

  • 字節&leetcode151:翻轉字符串裏的單詞

  • 字節&Leetcode3:無重複字符的最長子串

哈希表

  • 騰訊&leetcode349:給定兩個數組,編寫一個函數來計算它們的交集

  • leetcode380:常數時間插入、刪除和獲取隨機元素

  • 劍指Offer:第一個只出現一次的字符

二叉樹

  • 字節&leetcode144:二叉樹的前序遍歷

  • 字節&leetcode94:二叉樹的中序遍歷

  • 字節&leetcode145:二叉樹的後序遍歷

  • 字節&leetcode107:二叉樹的層次遍歷

  • 字節&leetcode112:路徑總和


  • 騰訊&字節等:最小的k個數

  • leetcode347:前 K 個高頻元素

編程題

  • 攜程&蘑菇街&bilibili:手寫數組去重、扁平化函數

  • 百度:模版渲染

  • 百度:什麼是淺拷貝和深拷貝?有什麼區別?如何實現 Object 的深拷貝

  • 阿里&字節:手寫 async/await 的實現

題目僅僅會在「前端進階算法集訓營」裏發佈,每個工作日早 9: 00,瓶子君都會在第二天解答呦

掃碼添加瓶子君小姐姐微信,免費拉你進營學習前端進階算法

以下是一些節選

前端進階算法1:如何分析、統計算法的執行效率和資源消耗?

好的數據結構與算法能夠大大縮短代碼的執行時間與存儲空間,那麼我們如何去衡量它喃?本節就主要介紹算法性能的衡量指標—複雜度分析

前端進階算法2:從Chrome  V8源碼看JavaScript數組(附贈騰訊面試題)

在 JavaScript 中,可以在數組中保存不同類型值,並且數組可以動態增長,不像其它語言,例如 C,創建的時候要決定數組的大小,如果數組滿了,就要重新申請內存空間,這是怎麼做到的喃?

本節從 Chrome v8 源碼角度回答了這個問題

前端進階算法3:從瀏覽器緩存淘汰策略和Vue的keep-alive學習LRU算法(附Leetcode題解)

由瀏覽器緩存策略引出 LRU 算法原理,然後透過 vue 中 keep-alive 源碼看 LRU 算法的實現,最後來一道leetcode,動手實現一個 LRU 緩存機制,點亮前端技能 X 點

前端進階算法4:鏈表原來如此簡單(+leetcode刷題)

介紹常用的鏈表(單鏈表、雙鏈表以及循環鏈表),畫圖且代碼實現常見的鏈表操作及複雜度問題,並總結出了一套常見的鏈表答題五步驟

前端進階算法5:全方位解讀前端用到的棧結構(+leetcode刷題)

代碼實現棧結構及相關操作,並附上覆雜度分析,作爲前端不應僅僅瞭解棧結構,也需要了解棧在前端的應用,這裏擴展介紹面試、前端進階資深必備的知識:調用棧、棧空間與堆空間以及相關的垃圾回收,讓算法不再獨立與前端

前端進階算法5:全方位解讀前端用到的棧結構(+leetcode刷題)

代碼實現棧結構及相關操作,並附上覆雜度分析,作爲前端不應僅僅瞭解棧結構,也需要了解棧在前端的應用,這裏擴展介紹面試、前端進階資深必備的知識:調用棧、棧空間與堆空間以及相關的垃圾回收,讓算法不再獨立與前端

前端進階算法6:一看就懂的隊列及配套算法題

隊列這種數據結構,據瓶子君瞭解,前端需要了解的隊列結構主要有:雙端隊列、滑動窗口,它們都是算法中是比較常用的數據結構

前端進階算法7:頭條正在面的哈希表問題

如何設計哈希函數以及如何解決衝突,這是哈希表考察的重要問題。

一個好的散列函數需要具有以下基本要求:易於計算、統一分佈、較少的衝突

常見的解決衝突方法有幾個:開放地址法(也叫開放尋址法)、鏈地址法、再哈希法、建立一個公共溢出區

前端進階算法8:小白都可以看懂的樹與二叉樹

不同與我們之前介紹的線性結構,今天我們介紹一種非線性結構:樹,樹的內容比較多,包括BST樹、AVL樹、Trie樹等

前端進階算法9:看完這篇,再也不怕堆排序、Top K、中位數問題面試了

堆是一個完全二叉樹,並且堆上的任意節點值都必須大於等於(大頂堆)或小於等於(小頂堆)其左右子節點值,推可以採用數組存儲法存儲,可以通過插入式建堆或原地建堆,堆的重要應用有:

  • 堆排序

  • Top K 問題:堆化,取前 K 個元素

  • 中位數問題:維護兩個堆,一大(前50%)一小(後50%),奇數元素取大頂堆的堆頂,偶數取取大、小頂堆的堆頂

前端進階算法集訓營

並且她也開通了前端進階算法集訓營第一期,在營裏:

  • 你可以和志同道合的前端朋友們一起進階前端算法,從0到1構建完整的數據結構與算法體系。

  • 瓶子君不僅介紹算法,還將算法與前端各個領域進行結合,包括瀏覽器、HTTP、V8、JS框架原理等。所以這裏不僅僅是進階算法,更是進階 JS。

  • 你可以每天學習一道大廠算法題(阿里、騰訊、百度、字節等等)或 leetcode,瓶子君都會在第二天解答喲!

  • 她還會每週、每月總結一次,回顧一下我們已經做了什麼,以後要做什麼,每天一小步,一月後收穫滿滿

掃碼關注公衆號和瓶子君一起進階前端算法,還有各種前端進階必備好文,同時兼顧前端學習的深度與廣度!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章