算法
记录一些题,算法!
叶子QAQ
我要吃三碗粉
展开
-
动态规划不能解决的走台阶问题
动态规划不能解决的走台阶问题 例如 要走上39级台阶,一次只能走一步,或者走两步,那么走上39级台阶总共有几种走法: 经典动态规划做法 public static void main(String[] args) { int dp[]=new int[40]; dp[1]=1; dp[2]=2; for(int i=3;i<=39;i++) { dp[i]=dp[i-1]+dp[i-2]; } System.out.println(dp[39]);//10233415原创 2021-02-24 12:01:56 · 428 阅读 · 0 评论 -
全排列问题
N个不同的数全排列 n个数的全排列,等于固定一个数在开头,再加上n-1个数的全排列 以此思想有递归的全排列,代码如下: public class PermutationSortTest { public static void main(String[] args) { int[] array=new int[] {1,2,3}; permutationSort(array,0,array.length-1); } public static void permutationSort(i原创 2021-02-23 21:10:02 · 130 阅读 · 1 评论 -
字符串的模式匹配
可以调用库函数 source.indexOf(target); BF 暴力搜索算法,最好情况时间复杂度为O(m),最差,平均时间复杂度为O(n * m) KMP算法 时间复杂度O(n)** BF算法代码如下,双指针,匹配失败则回溯,主串回溯到原来的起始位置, j-i(我前面有几个元素,我的索引就是几) 再往后一格 j-i+1 public class Solution { /** * @param source: * @param target: * @retur.原创 2020-12-23 17:40:46 · 183 阅读 · 0 评论 -
n阶乘结果 尾部的0个数
尾部的0 设计一个算法,计算n阶乘尾部的0的个数。 最开始的思路:递归计算n阶乘,转字符串,从串尾遍历检测0的个数。这相当于是直接翻译题目,超时,结果超出范围也就很常见了,而且数较大的时候计算阶乘就难顶了。 然后我们发现,只有“5”和偶数相乘会产生0。 比如5偶然,10偶数,15*偶数,25, … 怎么看呢,因为“5”的个数是多于偶数的个数的(两个相连“5”之间有两个偶数),所以问题变成了求5的个数。 然后,比如45=20=2 10,1512=3(62)5=1810。 计算结果的时候就把这些10,100放到原创 2020-12-23 09:24:58 · 240 阅读 · 0 评论