自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 leetcode 接雨水I II

双指针根据木桶原理,储水量由最短边决定我们使用两个指针,分别向左向右扫描,保存左右边的最高高度如果height[l] < height[r] 即右边高度高,则储水量由左边高度确定,反之相反class Solution {public: int trap(vector<int>& height) { int lmax=0,rmax=0...

2020-03-26 21:36:50 150

原创 33. 搜索旋转排序数组

33. 搜索旋转排序数组二分法将数组一分为二,则一定有 一部分是有序的,一部分是无序的 4 5 6 7 0 1 2如果nums[r] > nums[mid] 则右边一定有序 0 1 2 (7_mid 0 1 2_r)如果 nums[l] < nums[mid] 则左边一定有序 4 5 6 7 4_l 5 6 7 0_mid对有序部分的首尾元素进行判断,...

2020-03-19 15:11:26 92

原创 常用优化器(Adam SGD)算法

文章目录概览SGD (Stochastic gradient descent)MomentumNAG(Nesterov accelerated gradient)AdaGradRMSPro AdadeltaAdam概览梯度下降算法from .adadelta import Adadelta # noqa: F401from .adagrad import Adagrad # no...

2020-03-19 13:56:07 3914

原创 LeetCode_String

文章目录541 翻转字符串II557 翻转字符串中的单词 III383. 赎金信14. 最长公共前缀17. 电话号码的字母组合二进制手表541 翻转字符串II给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。...

2020-03-09 17:19:06 137

原创 拓扑排序

应用拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列。有向无环图(DAG)拓扑排序是基于有向无环图而言的Directed Acyclic Graph,如果一个有向图的任意顶点都无法通过一些有向边回到自身,那么称这个...

2020-03-07 13:46:27 115

原创 并查集相关问题

文章目录128. 最长连续序列1319. 连通网络的操作次数128. 最长连续序列// hard给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。要求复杂度O(N), 一般就是使用空间换时间,可以考虑使用 h...

2020-03-06 17:38:24 259

原创 c++ 并查集实现 优化

定义并查集(Disjoint-Set)是一种可以动态维护若干个不重叠的集合,并支持合并与查询两种操作的一种数据结构并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。并查集有两个基本操作:Find: 查找元素所属子集Union:合并两个子集为一个新的集合并查集的基本结构我们可以使用树这种数据结构来表示集合,不...

2020-03-05 01:34:26 496

原创 子集、全排列、组合 问题模式 回溯类型题解

文章目录78. 子集90 子集II77 组合46 全排列47 全排列II39 组合总和40 组合总和II78. 子集给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。输入: nums = [1,2,3]输出: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]子集: 对每个元素都有 取与不取...

2020-03-04 14:27:53 197

原创 HashMap O(1) 复杂度的分析

**C++**在使用STL时,经常混淆的几个数据结构,map,hash Map,unordered_map事实上,三个容器,有着比较大的区别.Map内部数据的组织,基于红黑树实现,红黑树具有自动排序的功能,因此map内部所有的数据,在任何时候,都是有序的。所以复杂度为 O(LogN)Hash map基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多...

2020-03-02 10:39:35 1936

原创 c++ 堆排序

堆排序堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。图解堆排序堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行...

2020-03-01 17:50:00 1665

原创 c++ 插入、希尔排序

插入排序插入排序的核心思想是 构建有序序列, 对于未排序数据,在已排序序列中 从后向前扫描,找到对应的位置并插入,这样慢慢 构建有序序列;交换法移动法代码实现: 选取首元素为有序序列,取有序序列后一个元素作为 插入对象, 在 有序序列中 从后向前 扫描, 找到对应的 插入位置// 在插入时采用交换法 (对比的同时 进行交换)// 1 4 5 3 --> 1 4 3 ...

2020-03-01 17:16:33 139

原创 快速排序 归并排序

思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。partition函数分割函数,快排的核心,思想就是在数组中找一个数作为中间值,把数组中比它小的放左边,大的放右边。这个函数有两种写法,单指针版和双指针版。核心思想: 每次都取数组的第一个元素作为比较标准(哨兵元素),凡是大于这个哨...

2020-03-01 14:44:09 168

原创 c+ pair用法

概述pair是将2个数据组合成一个数据,如STL中的map就是将key和value放在一起来保存。 pair的实现是一种结构体,主要的两个成员变量是first, second 因为是使用struct不是class,所以可以直接使用pair的成员变量。pair是一个模板类。类模板:template<class T1,class T2> struct pair参数:T1是第一个...

2020-03-01 14:14:02 545

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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