随笔分类 - 算法/数据结构
摘要:一 题目:旋转数组中的最小数字 这道题最直观的解法并不难,从头到尾遍历数组一次,我们就能找出最小的元素。这种思路的时间复杂度显然是O(n)。但是这个思路没有利用输入的旋转数组的特性,肯定达不到面试官的要求。 我们注意到旋转之后的数组实际上可以划分为两个排序的子数组,而且前面的子数组的元素都大于或者等
阅读全文
摘要:heapq 堆是一种特殊的树形结构,通常我们所说的堆的数据结构指的是完全二叉树,并且根节点的值小于等于该节点所有子节点的值 常用方法 常用方法示例 >>> [15, 2, 50, 34, 37, 55] >>> nlargest: [55, 50, 37, 34, 15, 2] >>> nsmall
阅读全文
摘要:Python实现快速排序 原理 首先选取任意一个数据(通常选取数组的第一个数)作为关键数据,然后将所有比它小的放到它前面,所有比它大的放到它后面,这个过程称为一趟快速排序 快速排序原理图如下: 实现
阅读全文
摘要:collections collections是日常工作中的重点、高频模块,常用类型有: 计数器(Counter) 双向队列(deque) 默认字典(defaultdict) 有序字典(OrderedDict) 可命名元组(namedtuple) 1. Counter Counter作为字典dici
阅读全文
摘要:/* * 迭代器类型 * 1. input ierator * 2. write iterator * 3. forward iterator 在迭代器所形成的区间上进行读写操作 * 4. bidirectional iterator 可双向移动 * 5. random access iterator */ // 在执行时期决定使用哪一个版本会影响程序效率,最好在编译期选择正确的版本,重载机...
阅读全文
摘要:扮演“特性萃取机”角色,萃取各个迭代器的特性(迭代器的相应类型) 模板特例化:提供一份template定义式,而其本身仍为templatization 通过class template partial specialization的作用,不论是原生指针或class-type iterators,都可
阅读全文
摘要:Trie的核心思想是空间换时间。利用字符串的公共前缀来降低查询时间的开销以达到提高效率的目的。 Trie的简单实现(插入、查询)
阅读全文
摘要:/* @链表法解决hash冲突 * 大单元数组,小单元链表 */ #pragma once #include using namespace std; template struct Node { size_t key; map_t content; Node *next; bool isEmpty; Node():next(NU...
阅读全文
摘要:// 快速排序 void QuickSort(int *pArr, int nLeft, int nRight) { int i = nLeft; int j = nRight; int nCankao = pArr[i]; if (nLeft > nRight) { return; } while (i != j) ...
阅读全文
摘要:二分查找树特点: (1) 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2) 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3) 任意节点的左、右子树也分别为二叉查找树。 (4) 没有键值相等的节点(no duplicate nodes)。 前序遍历
阅读全文

浙公网安备 33010602011771号