資料結構與演算法訓練營

2021-10-04 01:38:01 字數 2342 閱讀 7867

學習過程

cliarifation:確定題目

possible solutions:盡可能的多思考解題方式

coding:多寫

test case:寫測試用例

讀題+思考

直接看解法,比較不同解法的優劣

背誦、默寫

自己寫多種解法比較

一天之後反覆練習

一周之後再練習

面試之前恢復訓練

資料結構分類

基礎:陣列(array),鍊錶(linked list)

高階:棧(stack)佇列(queue)雙端佇列(deque)集合(set)map(字典)

基礎:樹(tree)圖(graph)

高階:二叉搜尋樹、紅黑樹、堆、字典樹

位運算布隆過濾器

lru cache

演算法三大基石

五種高階演算法

腦圖

自頂向下的程式設計方式
classtree node:

def__init__

(self, val)

: self.value = value

self.left, self.right =

none

,none

前序遍歷:根左右

中序遍歷:左根右

後序遍歷:左右根

from bitarray import bitarray

import mmh3

class

bloomfilter

:def

__init__

(self, size, hash_num)

: self.size = size # 二進位制陣列的大小

self.hash_num = hash_num # 每個對應多少位

self.bit_array = bitarray(size)

self.bit_array.setall(0)

defadd

(self, s)

:for seed in

range

(self.hash_num)

: result = mmh3.

hash

(s, seed)

% self.size

self.bit_array[result]=1

deflookup

(self, s)

:for seed in

range

(self.hash_num)

: result = mmh3.

hash

(s, seed)

% self.size

if self.bit_array[result]==0

:return

"nope"

return

"probably"

bf = bloomfilter(

500000,7

)bf.add(

"cui"

)print

(bf.lookup(

"cui"))

print

(bf.lookup(

"cu"

))

from collections import ordereddict

class

lrucache

:def

__init__

(self, cap)

: self.dic = ordereddict(

) self.cap = cap

defget(self, key)

:if key not

in self.

dict

:return-1

v = self.dic.pop(key)

self.key = v

return v

defput(self, key, value)

:if key in self.dic:

self.dic.pop(key)

else

:if self.cap >0:

self.cap +=

1else

: self.dic.popitem(last=

false

) self.dic[key]

= value

資料結構與演算法之二叉樹訓練營

public inttreedepth treenode root public treelinknode getnext treelinknode node return right while node.next null node node.next return null public tr...

演算法訓練營(一) 快速排序

usr bin python coding utf8 import random import time import copy testlist 6 1,2 7,9 3,4 5,10 8 testlist 6 1,2 7,9 3,4 5,10 8,2 11,8 1,13 2,6 1,8 0,4 2...

python入門訓練營 條件迴圈結構

1 編寫乙個python程式來查詢那些既可以被7整除又可以被5整除的數字,介於1500和2700之間。for i in range 1500,2700 if i 35 0 print i 如果要求每行顯示10個數字 a 0 for i in range 1500,2700 if i 35 0 con...