-
遞歸
場景:
? 1)斐波那契數列
-
遞推
場景:
? 1)斐波那契數列
? 2)遞歸 + 回溯
-
棧
先進后出
場景:
? 1)path.resolve /a/b/…/c/d —> /a/c/d
? 2)JSX
? 3)加減乘除表達式(2*3)+ 4
? 4)函數嵌套,函數調用棧
-
隊列
先進先出
-
鏈表
- 動態數據結構
- 單向鏈表
- 雙向鏈表
- 反轉鏈表
- 環形鏈表
- 跳表
// 節點 class Node{constructor(elment){this.element = element;this.next = null;} }// 鏈表 class LinkNodeList{constructor(){this.head = null;this.length = 0;}// 增加節點append(element){let node = new Node(element);let cur;// 兩種情況:1.鏈表為空 2.鏈表不為空if(this.head == null){this.head = node;} else{cur = this.head;while(cur){cur = cur.next;}cur.next = node;this.length += 1;}}// 刪除removeAt(index){let cur = this.head;let prev;let i;if(index == 0){this.head = cur.next;cur.next = null;} else {while(i<index){prev = cur;cur = cur.next;i++;}prev = cur.next;cur.next = null;}}// 打印鏈表print(){let cur = this.head;let result = [];while(cur){result.push(cur.element);cur = cur.next;}return result;} }
-
數組
- 連續存儲
- 刪除、新增復雜度比較高
-
樹
-
二叉樹
-
二叉樹的三種遍歷
1)前序遍歷(根節點->左節點->右節點)
2)中序遍歷(左節點->根節點->右節點)
3)后序遍歷(左節點->右節點->根節點)
-
二叉搜索樹
性質:
-
若左子樹不為空,則左子樹上所有節點的值都小于根節點的值
-
若右子樹不為空,則右子樹上所有節點的值都大于根節點的值
-
左右子樹也分別為二叉搜索樹
-
中序遍歷,為遞增有序列表
-
-
-
圖
-
react中的fiber和虛擬dom
-
二分法
-
位運算
-
按位與:&
示例:(5&1相當于余于2)
101 // 5 101 // 5 001 // 1 010 // 2 001 // 1 000 // 0
-
按位或:|
-
按位異或:^
-
按位取反:~
-
按位移:>>左移;<<右移
示例:(5>>1相當于除于2,5<<1相當于乘于2,)
5>>1 // 2 5<<1 // 10
-