如何有效學習演算法與資料結構
chunk it up (切碎知識點)
deliberate practicing (刻意練習)
feedback (反饋)
演算法:
切題四件套
coding(多寫)
test cases
如何計算演算法的複雜度
時間複雜度、空間複雜度
陣列&鍊錶(陣列查詢快,插入刪除慢;鍊錶查詢慢,插入刪除快)
鍊錶(linked list)
雙鏈表(doubly linked list)
反轉乙個單鏈表&判斷鍊錶是否有環
def reverselist(self, head):
cur, prev = head, none
while cur:
cur.next, prev, cur = prev, cur, cur.next
return prev
用快慢節點來區分:在第乙個節點快的+2,慢的+1 ,然後一直這樣操作的話,如果有閉環,兩個快慢節點會相撞。這樣操作的時間複雜度是o(n)
pre, pre.next = self, head
while pre.next and pre.next.next:
a = pre.next
b = a.next
pre.next, b.next, a.next = b, a, b.next
pre = a
return self.next
def hascycle(self, head):
fast = slow = head
while slow and fast and fast.next:
slow = slow.next
fast = fast.next.next
if slow is fast:
return true
return false
堆疊(stack)、佇列(queue)
queue:先入先出(fifo)
時間複雜度
資料結構與演算法 演算法 演算法和資料結構
資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...
資料結構 資料結構與演算法01
1 求一組整數中的最大值。演算法 基本操作是 比較兩個數的大小 模型 仔細想想 你並不知道這個整數到底是多大?整數過大你該怎麼去表示?2 足協的資料庫管理的程式 演算法 需要管理的專案?如何管理?使用者介面?模型 3 資料與資料結構 資料 所有能被輸入到計算機中,並被計算機處理的符號的集合計算機操作...
資料結構 資料結構與演算法02
1 演算法設計的原則 設計演算法時,通常應考慮達到以下目標 1,正確性 2,可讀性 3,健壯性 4,高效率與低儲存量需求 1,正確性 規格說明 四個層次 a,程式中不含語法錯誤 b,程式對於幾組輸入資料能夠得出滿足要求的結果 c,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...