算法分析
心静菩提现
这个作者很懒,什么都没留下…
展开
-
翻转子串
假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。 给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写 比如 “waterbottle”,”erbottlewat” 返回:true 这里涉及一原创 2017-07-14 12:06:04 · 246 阅读 · 0 评论 -
猴子吃桃
小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现只剩下一个桃子了问第一天猴子共摘多少个桃子?找出递推式 前一天总数为n,当天总数为sum,则 n-(n/2+1) = sum 即 n=2*(sum+1),实现如下:public class Peach { static int原创 2017-09-04 12:17:48 · 316 阅读 · 0 评论 -
0-1背包问题
问题描述有n个物品,第i个物品价值为vi,重量为wi,其中vi和wi均为非负数,背包的容量为W,W为非负数。现需要考虑如何选择装入背包的物品,使装入背包的物品总价值最大。原创 2017-08-15 18:45:13 · 411 阅读 · 0 评论 -
从n个数中选出m个数,结果按照字典序排列
数的组合问题,从n个数中选出m个数,结果按照字典序排列数的组合问题。从1,2,…,n中取出m个数,将所有组合按照字典顺序列出。如n=3,m=2时,输出:12 13 23 思想:每个数的选择都有可能,比如选择两个数,假设第一个选择的是第i(i从0开始)个数,则剩下的就从i+1到length-1中选择。 实现如下:import java.util.LinkedHashSet;public cla原创 2017-09-04 01:18:37 · 6032 阅读 · 1 评论 -
求一个整数数组的最大元素,用递归方法实现
求一个整数数组的最大元素,用递归方法实现思想 例如2,1,3,5,4 将数组中第一个元素A和剩下的数中的第一个数B进行比较,如果A大于B将A与B交换,然后求 A,3,5,4中的最大值。否则,求B,3,5,4中的最大值。实现如下:public class MaxInArray { public static void Max(int[] a){ if(a.length =原创 2017-09-04 00:00:55 · 1125 阅读 · 0 评论 -
KMP算法实现
分析KMP算法是一种改进的字符串匹配算法,KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。最核心的地方就是找到模式串中当前字符的最大k前缀,需要借助next数组保存,假设模式串长度为M,文本串长度为N,则KMP算法的时间复杂度为O(M+N),空间复杂度为O(M)。实现如下:public class KMPDemo { public static原创 2017-08-02 13:21:23 · 356 阅读 · 0 评论 -
BFPRT算法过程分析和实现
BFPRT算法分析与实现 java原创 2017-08-01 13:05:03 · 744 阅读 · 0 评论 -
检查链表是否为回文
请编写一个函数,检查链表是否为回文。 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 算法实现如下:原创 2017-07-14 16:58:45 · 728 阅读 · 0 评论 -
汉诺塔
汉诺塔思路 当n == 1时直接将a座上的盘子移到b座上. 当n > 1时 1) 将前n-1个盘子借助b座移到c座上. 2) 将a座上的第n个盘子移到b座上. 3) 将c座上的盘子移到b座上. 实现如下:public class Hanoi { public static void move(int a, int b){ System.out.println(原创 2017-09-04 15:45:06 · 200 阅读 · 0 评论