diff --git a/9 Algorithms Job Interview/README.md b/9 Algorithms Job Interview/README.md index 99db4ec..779c80f 100644 --- a/9 Algorithms Job Interview/README.md +++ b/9 Algorithms Job Interview/README.md @@ -24,7 +24,7 @@ ## 刷题框架套路 -遍历 +### 遍历 ``` # 数组遍历框架 @@ -41,12 +41,21 @@ void traverse(ListNode head) { } } -``` +void traverse(ListNode head) { - -递归 + ListNode p = head; + while(p.next != null) + ... + p = p.next + +} ``` + + +### 递归 + +```Java # 链表递归 void traverse(ListNode head) { // 递归访问 head.val @@ -71,6 +80,56 @@ void traverse(TreeNode root) { ``` +### 二分查找 + +```Java +public int bsearch(int[] nums, int target){ + + if(nums == null) { + return -1; + } + + int low = 0; + int high = nums.length; + + while(low < high){ + middle = (high + low ) / 2; + if(nums[middle] < target){ + low = middle; + } else if (nums[middle] == target) { + high = middle;// + } else { + high = middle; + } + } + + return low; + } +``` + +### 滑动窗口 + +```Java + + +``` + + +### 排序算法 + +[排序算法](../6%20Sort/README.md) + +```Java + +#快排 quickSort + + + +#归并排序 mergeSort + + + +``` diff --git a/README.md b/README.md index ce25ff7..a8e561b 100644 --- a/README.md +++ b/README.md @@ -51,20 +51,19 @@ ### [树](4%20Tree/README.md) -* 二叉树 -* 二叉查找树 -* 伸展树(splay tree 分裂树) -* 平衡二叉树AVL -* 红黑树 -* B树,B+,B* -* R树 -* Trie树(前缀树) -* 后缀树 -* 最优二叉树(赫夫曼树) -* 二叉堆 (大根堆,小根堆) -* 二项树 -* 二项堆 +* 二叉树 [快速排序](6%20Sort/README.md)就是个二叉树的前序遍历,归并排序就是个二叉树的后序遍历 +* [二叉查找树BST](4%20Tree/2-二叉查找树/二叉查找树.md) 有序的二叉树,中序遍历结果是递增的 +* [平衡二叉树 AVL树](4%20Tree/3-平衡树AVL/README.md) 绝对平衡二叉树; +* [红黑树](4%20Tree/9-红黑树%20R-B%20tree/红黑树.md) 弱平衡二叉树;使用广泛 +* [B树](4%20Tree/7-B树/B树.md) +* [B+树](4%20Tree/7-B树/B+树.md) mysql 索引使用 B+树 的数据结构 +* [字典树trie](4%20Tree/4-字典树Trie/README.md) 字典树也叫前缀树,单词查找树 +* [二叉堆](4%20Tree/8-堆/堆.md) +* [伸展树](4%20Tree/5-伸展树/伸展树.md) +* [后缀树](4%20Tree/6-后缀树/后缀树.md) * 斐波那契堆(Fibonacci Heap) +* 最优二叉树(赫夫曼树) + ### [图的算法](5%20Graph/README.md)