![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 93
算法学习
天天~
知识搬运工
展开
-
广度优先搜索详解
1、适用问题先看两个相关问题:leetcode1091. 二进制矩阵中的最短路径leetcode5053. 地图分析从题中可以看出,广度优先搜索适用问题:给定一幅图和一个起点s,寻找从起点s到给定目的点v是否存在路径,并找到最短的那条路径。2、实现过程如下图所示,寻找从出发点0到终点5的最短路径,寻找过程和病毒扩散十分相似,首先刚开始只有0点感染,1,2,3,4...原创 2019-08-19 14:45:56 · 3066 阅读 · 0 评论 -
模拟退火算法详解
1、求一个给定函数的最值问题求函数 y = 11sin(x) + 7cos(5x) 在[-10, 10] 内的最大值对于此问题,我们根据2、旅行商问题假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径为所有路径之中的最小值。假如我们使用枚举法,先走完所有的路径,然后选出最短的一条路径。从初始点出发的周游路线一共有(n-1)!条,即等于除初始结点外的n-1个结点的排列数,因此旅行商问题是一个排原创 2021-04-10 17:08:30 · 2592 阅读 · 0 评论 -
双指针详解
1、定义顾名思义,双指针即用两个不同速度或不同方向的指针对数组或对象进行访问,通过两个不同指针的碰撞从而达到特定的目的。2、解决问题在时间或空间条件有限的情况下使用单向遍历需要消耗大量的时间或者根本无法解决问题,这时候就需要我们使用双指针,通过指针的碰撞判断是否达到条件,从而解决问题。双指针分为快慢指针和左右指针,左右指针通常在数组有序的情况下使用,快慢指针通常在单向遍历需要消耗大量时间,或者有特定要求限制的情况下使用。首先介绍一下左右指针左右指针通常在数组有序的情况下,从最小和最大端同时对数组原创 2021-04-08 09:41:54 · 10130 阅读 · 6 评论 -
单调栈详解
定义: 单调栈,顾名思义就是栈内元素单调按照递增(递减)顺序排列的栈。适用问题:要知道单调栈的适用于解决什么样的问题,我们首先需要知道单调栈的作用。单调栈分为单调递增栈和单调递减栈,通过使用单调栈我们可以访问到下一个比他大(小)的元素(或者说可以)。也就是说在队列或数组中,我们需要通过比较前后元素的大小关系来解决问题时我们通常使用单调栈。下面我们通过简单介绍单调减栈和单调增栈问题来进一步...原创 2019-04-03 10:58:35 · 31739 阅读 · 20 评论