計劃發起一個練習演算法專案
一、背景
本來這篇計劃寫《二分查詢就是這麼簡單》的,結果發現之前已經寫過一篇《 從零開始學演算法:4二分查詢 》了。
既然寫過了,這裡就不重複寫了。
這裡計劃說點其他的事情。
二、二分查詢練習題
二分查詢這個演算法,理解原理沒啥用,主要是多練習。
各種二分查詢的姿勢都練習一下。
比如最裸的二分查詢,給一個有序的陣列,判斷一個數字是否存在。
題目: 704. Binary Search
接著就是二分查詢的基本應用。
比如整數開平方根、猜數字大小等。
題目分別是:
1.69. Sqrt(x)
2.374. Guess Number Higher or Lower
接著是稍微高階的二分查詢。
比如迴圈有序陣列查詢、找到一個數字的左邊界和右邊界、最接近的幾個數字等。
題目分別是:
1.33. Search in Rotated Sorted Array
2.34. Find First and Last Position of Element in Sorted Array
3.658. Find K Closest Elements
再後面,就需要做綜合體來練習了。
三、互動程式設計
對於程式設計,尤其是學習演算法,是最枯燥的一件事情。
不僅學習理論枯燥,實踐敲程式碼也很枯燥。
為了提升大家的興趣,我有一個想法,計劃發起一個專案:Leetcode 互動程式設計。
具體做法是:大家可以跟著我做 Leetcode 的節奏來做題。
當你每當做完一些題時,可以把這些題提交到我發起的這個 leetcode-solutions
專案上。
所有的題都在 problemset
目錄下,每道題一個目錄,目錄名就是 leetcode 裡面題目連結裡的名字。
而在這道題裡面,由三部分程式碼組成。
1.readme.md 題目的簡單介紹,以及解決思路
2.two-sum.cpp 群主的程式碼
3.xxx-two-sum.cpp 參與者提交的程式碼
大概結構如下圖:
四、最後
我不知道會有多少人蔘加這個專案,但是後面幾天我會整理一個完整的教程,來說明怎麼參與這個專案。
這個專案不要求每天來做題,你隨時都可以做題然後把程式碼合併到這個專案來,也可以隨時放棄參與這個專案。
所以如果你想學習演算法,就可以加我的微信(tiankonguse),來加入這個專案吧。
如果你有什麼想法,也可以留言或者微信告訴我,一起來改進這個專案。
-EOF-