演算法與資料結構

2021-09-29 13:38:40 字數 1393 閱讀 1087

如何有效學習演算法與資料結構

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,程式對精心選擇的 典型 苛刻切帶有刁難性的幾組輸入資料能夠得出滿足要求...