算法
文章平均质量分 75
with the wind(随风)
尽人事,听天意。
展开
-
算法基础笔记
算法复杂度学习时间复杂度选择排序的时间复杂度:最坏的:an^2 + bn + c => O(n^2)最优的:n => O(n),使用符号Ω平均的:O(n^2),使用符号θ评价一个算法的好坏:先看时间复杂度,再分析不同数据样本下的实际运行时间(也就是“常数项时间”)时间复杂度是按照最差的情况来写的空间复杂度O(1)定义若干个变量O(n)定义一个[n]一维数组O(n^2)定义一个[N][N]的二维数组排序选择排序public st.原创 2022-04-19 23:32:04 · 1115 阅读 · 2 评论 -
剑指 Offer II 095. 最长公共子序列(含最长公共子序列展示代码)
题目1.开一个二维数组dp2.下标分别为i,j;dp[i][j],i和j都从1开始[0,1) = {0}3.dp[i][j]表示:text1子串从[0,i)与text2子串从[0,j)的最长公共子序列4.知道第三个点是最重要的,不要忘记了噢5.当text1.charAt[i-1] == text.charAt[j-1]时,dp[i][j]=dp[i-1][j-1]+1;给你一个形象的栗子:(?表示不知道这元素是啥)????Z??Z因为,这两段序列最后一个元素相同,那么这两段的最长公共子原创 2021-10-22 20:29:30 · 202 阅读 · 0 评论 -
浅谈可重复访问城市的TSP问题(最短距离 + 具体走法)
小伙伴们,你们好。今天我来浅显的讲一下这个可重复访问城市的TSP问题,所谓的可重复就是城市和路线都随便走,只要最后它的路径总和是最小的就行。要用到的知识点是 状态压缩dp 和 Floyd算法一、Floyd算法Floyd算法:floyd算法学习视频这个小姐姐会用手算的方式带你了解floyd算法的整个过程,相信看完你就有一种恍然大悟的感觉了我下面floyd算法的主要作用是让我们得到一个距离二维数组,路径二维数组1.distance[][]例子:distance[i][j] 表示点i到点j的最短距离原创 2021-10-11 02:34:20 · 5434 阅读 · 5 评论 -
深度优先搜索 --leetcode:200. 岛屿数量
下一次,你女朋友再问深搜可不能说不会了听说点了关注和点赞的人都脱单了下面就让我生动形象的带你去体验一波深搜吧拿这道题为例:明确我们要做什么:找出有多少块陆地,这是典型的搜索问题深搜的模板我们要搞一扇门,不满足的元素就出去我们要记录一下被我们访问过的点搜这就好像你去相亲,满足条件的就给他进门,不满足的就让他滚蛋。然后进来和你相过亲的就记录一下,下次就不让他进门了,一个相亲完成之后就继续你的相亲之路,直到结束。差点忘了,关注和点赞的朋友根本不需要相亲。下面我们就开始造门,想办法给搜索.原创 2021-09-30 17:53:48 · 183 阅读 · 0 评论 -
浅谈格雷码 (分治法)
题目:分治法:故名思意,分而治之下面我们就分开它,然后搞死它,谁叫它让我们掉发思路假设,我们现在要构造n值相对应的格雷码,我们可以先把n-1值对应的格雷码中心对称分给下半部分,这样子的话,我们除了对称两边第一行这对不满足我们的条件,其他的相邻对都满足了,然后我们还有最后一列可以让我们发挥。说到这里大家可能有点糊涂了:我用图来说话用红色圈住这两个东西,由于我们对称复制,所以这两框中一 一对应元素相同,我们要这两行有差异,我们就让最后一列元素和红框1同行的为0,和红框2同行的为1。(ps:0和1原创 2021-09-24 21:27:32 · 1226 阅读 · 2 评论 -
面试题 17.16. 按摩师
面试题 17.16. 按摩师(leetcode)一个有名的按摩师会收到源源不断的预约请求,每个预约都可以选择接或不接。在每次预约服务之间要有休息时间,因此她不能接受相邻的预约。给定一个预约请求序列,替按摩师找到最优的预约集合(总预约时间最长),返回总的分钟数实例思路首先我们要明确的是一个元素,它只有两种可能,要它和不要它两种我们提前把nums[0]和nums[1]位置情况填入dp数组先dp[0] = nums[0] (因为nums[0]前面啥也没有,填入自己无疑是最优的)dp[1] = m原创 2021-09-23 17:43:38 · 322 阅读 · 0 评论