自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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&gt...

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&gt...

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关注的人

提示
确定要删除当前文章?
取消 删除