這兩天隨便在csdn上搜尋題目做,搜到了經典的8皇后問題和智慧型的賊問題,意識到演算法的強大。家裡人看到我在一堆數字中畫圈圈,想用人腦來解決8皇后問題,還以為我在買彩票……
8皇后問題的解答,網上看到最經典的是dfs演算法,當我試著不用該演算法解決問題的時候,就意識到自己的腦子不夠用了。智慧型的賊題目也是一樣。
當我想用人腦去寫規則的時候,規則越多,就越容易得不到最全的答案。
而規則少的時候,計算機算量非常大,耗時長也能解決問題,可是就容易出現記憶體溢位的問題,根本等不到答案的冒泡。
有題目文字描述的時候,規則 = 題幹所有的限制條件。
沒有任何乙個題幹內容是白寫的,這和我們讀書時候解數學題是一回事兒。當我們把題幹的內容,作為限制條件寫成演算法的規則,去圈定計算機嘗試的範圍。這是最好的選擇。
如果沒有題幹呢?
比如乙個現實的問題,我們想用程式設計的方法,獲得最優解,該如何用人腦去指定規則呢?
作為乙個小白,到這裡明白演算法的重要性了。這些總總算法,都是前人走通的路子,這些路子,就是儘量減少了人腦侷限,但又能給計算機以一定的規則的方法。如果要從小白自己總結,不知道又要花多少時間。
在網上買了一些演算法的書籍,後面部落格更新可能會慢很多,因為要紮進演算法學習的海洋。
因為我在網上找到的題目,大多數是來自於力扣(專門去看了,有答題框架,像玩遊戲通關一樣。聽說目前中文版和英文版已經打通,裡面有很多演算法題可以刷。在本部落格系統中曾有大神一年內就通過刷題從小白成為了microsoft的員工。既然是要付年費,那就等我演算法書看完,再去刷題啦。
老熊去也。
每日一演算法
leetcode 75 號題 給定乙個包含紅色 白色和藍色,一共 n 個元素的陣列,原地對它們進行排序,使得相同顏色的元素相鄰,並按照紅色 白色 藍色順序排列。此題中,我們使用整數 0 1 和 2 分別表示紅色 白色和藍色。注意 不能使用 庫中的排序函式來解決這道題。示例 輸入 2,0,2,1,1,...
每日一演算法
答主大二,這學期剛開了資料結構與演算法的課程,但課堂上只提及基礎的增刪改查,遠遠不能滿足對資料結構相對熟悉的需求,因而答主便有了 每日演算法 專題練習的想法,有需要的可以共同練習,與君共勉 適用人群 資料結構與演算法初學者 題型大多來自leetcode 請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 ...
一 演算法初探
一 時間複雜度和空間複雜度 一是 迴圈巢狀執行的次數比單次實現更為複雜 分析乙個演算法的執行時間時,總要的是吧基本操作的數量和輸入沒事關聯起來,1 函式的逐漸增長 比較演算法上面的執行相同結果的執行次數,針對函式冪級的關係可以忽略前常數項的效果 隨著執行次數的增大,得到的結果也讓這個程序越來越複雜。...