常用算法
新时代打工崽
这个作者很懒,什么都没留下…
展开
-
KMP算法
KMP算法 应用场景-字符串匹配问题 (1)有一个字符串str1 = “abcdefghabcdelkm”,和一个子串st2 = “abcdef”。 (2)现在要判断str1是否含有str2,如果存在,就返回第一次出现的位置,如果没有就返回-1。 暴力匹配算法: 如果用暴力匹配的思路,并假设现在str1匹配到 i 位置,子串str2匹配到 j 位置,则有: 如果当前字符匹配成功(即str1[i] == str2[j]),则i++,j++,继续匹配下一个字符 如果失配(即str1[i]! = str2[原创 2020-09-04 17:34:04 · 133 阅读 · 0 评论 -
动态规划算法
动态规划算法介绍 动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。 动态规划算法与分治算法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 与分治法不同的是,适用于动态规划求解的问题,经分解得到的子问题往往不是互相独立的。 动态规划可以通过填表的方式来逐步推进,得到最优解。 动态规划算法最佳实践-背包问题 思路分析和图解 背包问题主要是指一个给定容量的背包、若干具有一原创 2020-09-02 16:58:05 · 100 阅读 · 0 评论 -
BinarySearch二分查找算法
二分查找 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 二分查找的时间为对数时间O(logn),即查找到需要的目标位置最多只需要log2n步。 二分查找只适用于从有序的数列中查找,将数列进行排序后在进行查找。 代码实现 二分查找可以使用循环或者递归来实现,以下为两种实现方式的代码。 1.循环 /** * * @param arr * 待查找的数组原创 2020-09-01 15:16:46 · 249 阅读 · 0 评论