- 博客(33)
- 收藏
- 关注
转载 C++ STL unordered_set容器完全攻略
我们知道,C++ 11 为 STL 标准库增添了 4 种无序(哈希)容器,前面已经对 unordered_map 和 unordered_multimap 容器做了详细的介绍,本节再讲解一种无序容器,即 unordered_set 容器。unordered_set 容器,可直译为“无序 set 容器”,即 unordered_set 容器和 set 容器很像,唯一的区别就在于 set 容器会自行...
2020-05-02 10:11:06
1303
转载 C++ unordered_set
目录1.定义2.基本的函数2.1.unordered_set构造2.2.添加新的元素(注意无法插入相同元素)2.3.查找元素2.4.查找桶接口2.5.观察器2.6.清除元素2.7.其他函数1.定义unordered_set本质是使用hash散列的方式存储数据,是一种使用hash值作为key的容器,所以当有频繁的搜索、插入和移除拥有常数时间。unordered_set存储原理...
2020-05-02 08:56:33
710
原创 动态规划--斐波那契数列
动态规划将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终得到原问题的答案。本质:递归问题–>重叠子问题:记忆化搜索 (自顶向下) 动态规划(自底向上)int fib(int n){ //动态规划 vector<int>memo; memo=vector<int>(n+1,-1); //vector<int>...
2020-04-30 16:30:48
274
原创 总持续时间可被 60 整除的歌曲
总持续时间可被 60 整除的歌曲在歌曲列表中,第 i 首歌曲的持续时间为 time[i] 秒。返回其总持续时间(以秒为单位)可被 60 整除的歌曲对的数量。形式上,我们希望索引的数字 i 和 j 满足 i < j 且有 (time[i] + time[j]) % 60 == 0。示例 1:输入:[30,20,150,100,40]输出:3解释:这三对的总持续时间可被 60 ...
2020-04-30 09:35:44
106
原创 SortTestHelper
#ifndef INC_05_QUICK_SORT_ANOTHER_PARTITION_SORTTESTHELPER_H#define INC_05_QUICK_SORT_ANOTHER_PARTITION_SORTTESTHELPER_H#include <iostream>#include <algorithm>#include <string>...
2020-04-17 09:59:33
766
原创 广度优先遍历和最短路径
#ifndef INC_07_BFS_AND_SHORTEST_PATH_SHORTESTPATH_H#define INC_07_BFS_AND_SHORTEST_PATH_SHORTESTPATH_H#include <vector>#include <queue>#include <stack>#include <iostream>...
2020-04-16 21:51:37
320
原创 图-寻路
#ifndef INC_06_FINDING_A_PATH_PATH_H#define INC_06_FINDING_A_PATH_PATH_H#include <vector>#include <stack>#include <iostream>#include <cassert>using namespace std;// 路...
2020-04-16 17:15:43
130
原创 图-深度优先遍历和联通分量
#ifndef INC_05_DFS_AND_COMPONENTS_COMPONENTS_H#define INC_05_DFS_AND_COMPONENTS_COMPONENTS_H#include <iostream>#include <cassert>using namespace std;// 求无权图的联通分量template <typen...
2020-04-16 13:51:17
153
原创 稠密图-邻接矩阵
#ifndef INC_02_GRAPH_REPRESENTATION_DENSEGRAPH_H#define INC_02_GRAPH_REPRESENTATION_DENSEGRAPH_H#include <iostream>#include <vector>#include <cassert>using namespace std;// ...
2020-04-15 14:28:20
411
原创 稀疏图-邻接表
#ifndef INC_02_GRAPH_REPRESENTATION_SPARSEGRAPH_H#define INC_02_GRAPH_REPRESENTATION_SPARSEGRAPH_H#include <iostream>#include <vector>#include <cassert>using namespace std;/...
2020-04-15 14:27:18
170
原创 并查集优化-路径压缩
并查集操作,时间复杂度近乎为O(1)#ifndef INC_06_PATH_COMPRESSION_UNIONFIND5_H#define INC_06_PATH_COMPRESSION_UNIONFIND5_H#include <cassert>using namespace std;// 我们的第五版Union-Findnamespace UF5{ cl...
2020-04-15 10:17:22
261
原创 基于rank的并查集优化
rank[i]表示根节点为i的树的高度#ifndef INC_05_OPTIMIZE_BY_RANK_UNIONFIND3_H#define INC_05_OPTIMIZE_BY_RANK_UNIONFIND3_H#include <cassert>using namespace std;// 我们的第四版Union-Findnamespace UF4{ c...
2020-04-14 14:45:56
186
原创 基于size的并查集优化
#ifndef INC_04_OPTIMIZE_BY_SIZE_UNIONFIND3_H#define INC_04_OPTIMIZE_BY_SIZE_UNIONFIND3_H#include <cassert>using namespace std;// 我们的第三版Union-Findnamespace UF3{ class UnionFind{ ...
2020-04-14 10:15:04
131
原创 并查集union find1
#ifndef INC_03_QUICK_UNION_UNIONFIND1_H#define INC_03_QUICK_UNION_UNIONFIND1_H#include <iostream>#include <cassert>using namespace std;// 我们的第一版Union-Findnamespace UF1 { clas...
2020-04-14 09:11:14
152
原创 并查集union find2
#ifndef INC_03_QUICK_UNION_UNIONFIND2_H#define INC_03_QUICK_UNION_UNIONFIND2_H#include <cassert>using namespace std;// 我们的第二版Union-Findnamespace UF2{ class UnionFind{ private:...
2020-04-14 09:10:10
74
原创 二分搜索树节点删除
删除任意节点的时间复杂度为O(logn)#include <iostream>#include <queue>#include <cassert>using namespace std;// 二分搜索树template <typename Key, typename Value>class BST{private: //...
2020-04-13 09:54:32
207
原创 层序遍历(广度优先遍历)
遍历复杂度O(n)#include <iostream>#include <queue>using namespace std;// 二分搜索树template <typename Key, typename Value>class BST{private: // 树中的节点为私有的结构体, 外界不需要了解二分搜索树节点的具体实现 ...
2020-04-12 21:37:23
581
原创 二分搜索树
#include <iostream>#include <queue>#include <ctime>using namespace std;// 二分搜索树template <typename Key, typename Value>class BST{private: // 树中的节点为私有的结构体, 外界不需要了...
2020-04-11 22:09:53
80
原创 二分查找法
解决查找问题二分查找法:针对有序数列才可使用#include <iostream>#include <cassert>#include <ctime>using namespace std;// 二分查找法,在有序数组arr中,查找target// 如果找到target,返回相应的索引index// 如果没有找到target,返回-1...
2020-04-11 21:10:37
126
原创 索引堆Index Heap
#include <iostream>#include <cassert>#include "SortTestHelper.h"using namespace std;// 最大索引堆template<typename Item>class IndexMaxHeap{private: Item *data; // 最大索引堆中...
2020-04-08 23:10:01
141
原创 原地堆排序-heapSort
最后一个非叶子节点的索引:(count-1)/2#include <iostream>#include <algorithm>#include "MergeSort.h"#include "QuickSort.h"#include "QuickSort2Ways.h"#include "QuickSort3Ways.h"#include "HeapSort....
2020-04-08 09:40:43
130
原创 堆排序heapify-
#include <iostream>#include <algorithm>#include "Heap.h"#include "MergeSort.h"#include "QuickSort.h"#include "QuickSort2Ways.h"#include "QuickSort3Ways.h"#include "SortTestHelper.h"...
2020-04-07 14:34:43
322
原创 二叉堆-最大堆实现
#include <iostream>#include <algorithm>#include <string>#include <ctime>#include <cmath>#include <cassert>using namespace std;template<typename Item>...
2020-04-06 17:24:31
194
原创 三路快速排序法
#include <iostream>#include <algorithm>#include <ctime>#include "SortTestHelper.h"#include "MergeSort.h"#include "InsertionSort.h"#include "QuickSort.h"using namespace ...
2020-04-04 21:55:19
293
原创 双路快速排序法
把等于V的情况分配到两个部分中#include <iostream>#include <algorithm>#include <ctime>#include "SortTestHelper.h"#include "MergeSort.h"#include "InsertionSort.h"using namespace std;// ...
2020-04-04 21:24:45
134
原创 随机化快速排序
#include <iostream>#include <algorithm>#include <ctime>#include "SortTestHelper.h"#include "MergeSort.h"#include "InsertionSort.h"using namespace std;// 对arr[l...r]部分进行part...
2020-04-04 18:33:22
299
原创 自底向上的归并排序法
#include <iostream>#include "SortTestHelper.h"#include "MergeSort.h"using namespace std;// 使用自底向上的归并排序算法template <typename T>void mergeSortBU(T arr[], int n){ // Merge Sort B...
2020-04-03 11:56:35
230
原创 快速排序
```cpp// 对arr[l...r]部分进行partition操作// 返回p, 使得arr[l...p-1] < arr[p] ; arr[p+1...r] > arr[p]template <typename T>int __partition(T arr[], int l, int r){ T v = arr[l]; int j = ...
2020-04-02 22:58:10
58
原创 归并排序 O(n*logn)
//将arr[l,mid]和arr[mid+1,r]两部分进行归并template<typename T>void __merge(T arr[],int l,int mid,int r){ T aux[r-l+1];//辅助空间来存储原数组中所有的元素 for(int i=l;i<=r;i++) aux[i-l]=arr[i]; int i=l,j=mid+1;...
2020-04-01 21:04:02
113
原创 冒泡排序
void BubbleSort(int a[], int size){ for (int i = size; i > 0; --i) { for (int j = 0; j < i; ++j) if (a[j] > a[i]) { int temp = a[i]; a[i] = a[j]; a[j] = temp; } }}...
2020-04-01 16:53:22
49
原创 生成随机数组
//生成有n个元素的随机数组,每个元素的随机范围为[rangeL,rangeR] int*generateRandomArray(int n, int rangeL, int rangeR) { assert(rangeL <= rangeR); int*arr = new int[n]; srand((unsigned int)time(NULL)); for (int ...
2020-04-01 16:38:57
726
原创 选择排序
```cpptemplate<typename T>void selectionSort(T array[], int n){ for (int i = 0; i < n; i++) { //寻找[i,n)区间的最小值 int minIndex = i; for (int j = i + 1; j < n; j++) { if (array...
2020-04-01 16:30:46
1149
原创 插入排序
在这里插入代码片对近乎有序的数组,插入排序的效率很高template <typename T>```cppvoid insertionSort(T arr[], int n) { for (int i = 1; i < n; i++) { //寻找arr[i]元素合适的插入位置 T e = arr[i]; int j = 1;//保存e应该插入的位置...
2020-04-01 16:24:25
61
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人