- 博客(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 1378
转载 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 747
原创 动态规划--斐波那契数列
动态规划将原问题拆解成若干子问题,同时保存子问题的答案,使得每个子问题只求解一次,最终得到原问题的答案。本质:递归问题–>重叠子问题:记忆化搜索 (自顶向下) 动态规划(自底向上)int fib(int n){ //动态规划 vector<int>memo; memo=vector<int>(n+1,-1); //vector<int>...
2020-04-30 16:30:48 304
原创 总持续时间可被 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 118
原创 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 814
原创 广度优先遍历和最短路径
#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 334
原创 图-寻路
#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 141
原创 图-深度优先遍历和联通分量
#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 159
原创 稠密图-邻接矩阵
#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 428
原创 稀疏图-邻接表
#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 196
原创 并查集优化-路径压缩
并查集操作,时间复杂度近乎为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 274
原创 基于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 200
原创 基于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 136
原创 并查集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 182
原创 并查集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 98
原创 二分搜索树节点删除
删除任意节点的时间复杂度为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 215
原创 层序遍历(广度优先遍历)
遍历复杂度O(n)#include <iostream>#include <queue>using namespace std;// 二分搜索树template <typename Key, typename Value>class BST{private: // 树中的节点为私有的结构体, 外界不需要了解二分搜索树节点的具体实现 ...
2020-04-12 21:37:23 608
原创 二分搜索树
#include <iostream>#include <queue>#include <ctime>using namespace std;// 二分搜索树template <typename Key, typename Value>class BST{private: // 树中的节点为私有的结构体, 外界不需要了...
2020-04-11 22:09:53 87
原创 二分查找法
解决查找问题二分查找法:针对有序数列才可使用#include <iostream>#include <cassert>#include <ctime>using namespace std;// 二分查找法,在有序数组arr中,查找target// 如果找到target,返回相应的索引index// 如果没有找到target,返回-1...
2020-04-11 21:10:37 137
原创 索引堆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 167
原创 原地堆排序-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 136
原创 堆排序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 341
原创 二叉堆-最大堆实现
#include <iostream>#include <algorithm>#include <string>#include <ctime>#include <cmath>#include <cassert>using namespace std;template<typename Item>...
2020-04-06 17:24:31 204
原创 三路快速排序法
#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 305
原创 双路快速排序法
把等于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 151
原创 随机化快速排序
#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 307
原创 自底向上的归并排序法
#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 242
原创 快速排序
```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 64
原创 归并排序 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 118
原创 冒泡排序
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 53
原创 生成随机数组
//生成有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 744
原创 选择排序
```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 1162
原创 插入排序
在这里插入代码片对近乎有序的数组,插入排序的效率很高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 67
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人