摘要: 字符串匹配在日常开发中很常用,用于判断一个字符串中是否包含另外一个字符串,例如Java中的indexOf方法,查到则返回对应的位置,未查询到则返回-1。 如图-1,在“abcabd”中查找“abd”,最终在下标3的位置匹配。 图-1 至于是如何匹配的,直觉上认为就是挨个匹配,应该没有什么难度。我们就 阅读全文
posted @ 2022-09-10 10:22 binary220615 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 最长递增子序列(Longest Increasing Subsequence)是指在给定的一组数字中,按照从左向右顺序,由递增的数字组成的子序列(中间可以有间隔)中,取长度最大的子序列即为最长递增子序列。 如给定“1 2 4 3”,则递增的子序列有“1 2”、“1 4”、“1 3”、“2 4”、“2 阅读全文
posted @ 2022-08-31 14:20 binary220615 阅读(2271) 评论(0) 推荐(0) 编辑
摘要: 先看下最长公共子序列(Longest Common Subsequence)的问题描述。 给定两个字符串,求两者的最长公共子序列的长度。 子序列是指从字符串中按特定顺序(从左向右或从右向左,可以有间隔)选取的一些字符组成的序列。例如“ABCDEF”中ABC、ACD、AE、AF都是子序列。而公共子序列 阅读全文
posted @ 2022-08-29 22:57 binary220615 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 先看问题描述: 给定7个数字30、35、15、5、10、20、25,只能相邻的两个数字组成矩阵,即:30*35、35*15、15*5、5*10、10*20、20*25共计6个矩阵,且只能相邻的两个矩阵相乘。求矩阵最小的相乘次数。 我们先解释下什么是矩阵相乘(Matrix Multiplication 阅读全文
posted @ 2022-08-24 15:40 binary220615 阅读(980) 评论(0) 推荐(0) 编辑
摘要: 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。 ——引用于百度百科 我们先从一个例子看下动态规划的思想。 有一个最大负重为8千克的背包。现有四个物品,对应的名称、重量、价值如图-1 图-1 求在背包负重范围内,使装进背包物品的价值之和最大。 阅读全文
posted @ 2022-08-20 15:47 binary220615 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章我们介绍了AOV网,并通过拓扑排序列出了活动的依赖顺序图。拓扑排序中我们关注的是依赖关系,没有考虑每个活动的完成时间,而在项目管理中要知道各个活动的时长才能计算出项目整体的完成时间。 我们需要加入对活动完成时间的考量,而图中的权重就可以用来表示完成时间。因此对应的具体数据结构是一种带权重的 阅读全文
posted @ 2022-08-16 13:31 binary220615 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 日常项目开发中,一般流程是产品经理提出需求,相关人员进行需求评审,然后是前后端工程师开发功能,再到测试、发布上线。 流程如下: 图-1 可以看到,这些步骤是存在先后(依赖)关系的:前后端的开发依赖于需求评审,测试又依赖前后端开发。不可能需求还没评审,工程师就开始开发。 其次,这些步骤之间不能存在相互 阅读全文
posted @ 2022-08-14 12:52 binary220615 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 之前在介绍“图的一些基本概念”中提到了最小生成树,其中一种算法是克鲁斯卡尔(Kruskal's algorithm)算法,里面涉及了对环的判断。我们再回顾下算法的主要流程: 从最小的一个边开始连接,然后再连接第二小的边,且保证新加入的边不能和已经连接的顶点形成环。这样一直重复,最终连接起所有的顶点。 阅读全文
posted @ 2022-08-10 13:41 binary220615 阅读(25) 评论(0) 推荐(0) 编辑
摘要: 之前我们学习了图的最短路径算法之Dijkstra算法,知道此算法是用来求指定的两顶点间最短路径的(也称单源最短路径single-source),如果要求图中任意两顶点间的最短路径,怎么办呢? 当然可以通过对任意两点调用Dijkstra算法来实现。有没有更好的办法,运行一次就能求解出任意两顶点的距离呢 阅读全文
posted @ 2022-08-03 22:47 binary220615 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 我们使用导航应用时,选择好出发地和目的地,就能计算出两地的最短距离,而且能显示出到各个路口的距离。这个场景映射到数据结构和算法中,其实是求图中两个顶点间的最短距离。由于是从一个顶点到另外一个顶点,涉及到方向以及不同顶点间的距离,因此是带权重的有向图。 我们先大概分析下这个问题。 一般我们的想法是两顶 阅读全文
posted @ 2022-07-27 13:30 binary220615 阅读(267) 评论(0) 推荐(0) 编辑