
算法
JeffLee0371
自律给我自由
展开
-
P、NP、NPC、NP-HARD问题
上周研究生开学第一周,算法课老师提到了诸多概念,因为对算法这块自觉薄弱,所以打算尽所能课余时间多吸收吸收。课上老师提到很多人其实都没有把P、NP、NPC、NP-HARD问题完全搞清楚,我就去查了一下相关资料,引出了很多感兴趣的内容,以后也会选择性的学习和记录。 主要阅读了Matrix67的相关博客: http://www.matrix67.com/blog/archives/105。 其实这...转载 2018-09-08 12:08:00 · 315 阅读 · 0 评论 -
大厂算法例题解之网易2018秋招笔试真题 (未完)
1、字符串碎片【题目描述】一个由小写字母组成的字符串可以看成一些同一字母的最大碎片组成的。例如,“aaabbaaac”是由下面碎片组成的:‘aaa’,‘bb’,‘c’。牛牛现在给定一个字符串,请你帮助计算这个字符串的所有碎片的平均长度是多少。输入描述:输入包括一个字符串 s,字符串 s 的长度 length(1 ≤ length ≤ 50),s 只含小写字母(‘a’-‘z’)输出描述:...原创 2019-02-28 20:00:31 · 650 阅读 · 0 评论 -
关于散列表的大小设定
数据库课上老师提出的问题,大意是给一个集合S,给一个散列函数和相应的散列表,长为m,从S映射到表,问 使得给一个x,通过散列表判断其不在S中的概率小于0.05,这个m该是多少?老师说这个问题是美国大学生都会证的问题,这也是中国大学生研究生缺乏的思考能力。我完全没头绪。。只是在想这跟m有什么关系,下课后也没找到合适的资料。这里整理一下我查到的一些关于哈希表的长度设定问题的英文资料和机翻。想看知...原创 2018-11-28 18:55:07 · 6582 阅读 · 1 评论 -
Coursera Algorithms week1 练习测验:Egg drop 扔鸡蛋问题
转自 https://www.cnblogs.com/evasean/p/7208986.html题目原文:Suppose that you have an n-story building (with floors 1 through n) and plenty of eggs. An egg breaks if it is dropped from floor T or higher an...原创 2018-11-22 21:19:57 · 657 阅读 · 0 评论 -
KMP算法
跟马拉车算法其实有点异曲同工。package KMP;public class KMP_Test { public static void main(String[] args) { String ts = "DFabc"; String ps = "ab"; int l = KMP(ts, ps); System.out.println(l); } public st...原创 2018-10-21 16:14:21 · 118 阅读 · 0 评论 -
Coursera Algorithms Week1 Homework Percolation
这个问题的文档太经典,以后自己写程序也要这样分析。MODEL 模型PROBLEM 问题(PERCOLATION DATA TYPE) 设计类(MONTE CARLOSIMULATION) 方法ANALYSIS OF RUNNING TIME AND MEMORY USAGE 是空间分析sdf d ...原创 2018-10-25 18:05:27 · 276 阅读 · 0 评论 -
Coursera Algorithms week1 练习测验
package unionFind;import java.io.*;import java.util.*;import edu.princeton.cs.algs4.StdOut;public class SocialNetworkUF { private QuickUnionUF uf; public SocialNetworkUF(int num) { uf = new...原创 2018-10-25 15:08:50 · 682 阅读 · 0 评论 -
Algorithms,Part 1(第一周)
代码和笔记整理笔记简单整理1.导入jar包的操作2.设计类先抽象功能和需要用到的变量3.先设计测试类的接口4.一定要讨论数据结构和算法的应用场景5.算法的时间复杂度需要自己跑跑试试,学会测试一切自己想测试的东西,不要迷信权威并查集(Union-Find)接口抽象package unionFind;import edu.princeton.cs.algs4.*;public...原创 2018-10-25 13:02:39 · 562 阅读 · 0 评论 -
最小生成树Prim算法java实现
package prim;import java.util.*;public class PrimTest { public static void main(String[] args) {//交互输入图的邻接矩阵表示,为方便测试,直接给定了邻接矩阵值// System.out.println("请输入图定点个数: ");// Scanner sc = new Scann...原创 2018-10-17 19:47:25 · 6075 阅读 · 1 评论 -
随机算法 Las Vegas算法 Monte Carlo算法
随机算法定义不要求对所有输入均正确计算,只要求出现错误的可能性小到可忽略(得能解决问题)同一组输入,不要求同一个结果(不确定)应用有些使用确定性求解算法效率会很差的问题,如果用随机算法求解,可以很快得到相当可信的结果,典型用于公钥,RSA算法。分类主要分为LasVegas算法和MonteCarlo算法Las Vegas算法少数应用时会出现求不出解的情况但一旦找到一个解,则...原创 2018-10-22 15:35:22 · 6672 阅读 · 0 评论 -
最优二叉搜索树(JAVA实现)
算法课上老师讲的最优二叉搜索树,自己又差了些资料才看明白,好多朋友已经写的很清楚了。这篇只记录下自己用java的实现。想学习整个算法的可以参照 https://blog.youkuaiyun.com/zhangyifei521/article/details/50833792package bestBinarySearchTree;public class writebyjeff { public...原创 2018-10-10 21:40:28 · 4456 阅读 · 1 评论 -
Manacher's Algorithm 马拉车算法
算法课的作业,每个组需要讲解一个经典问题和解决方案,同组的同学想讲这个,发给了我一些资料,此文仅作自己的理解过程的一个记录,如有错误之处请指教。问题经典的最长回文子串问题(Longest_palindromic_substring)。回文串就是正读反读都一样的字符串,比如 “a”,“bob”, “noon” 等。最长回文子串问题即在一个字符串中找出其长度最大的回文子串(这不废话嘛)。传统解决...原创 2018-10-08 20:38:57 · 503 阅读 · 0 评论 -
最长公共子串LCS问题(动态规划及备忘录方法)
动态规划与备忘录的LCS实现动态规划从下到上积累能量,中间值全部记录以方便后期计算时调用,但有些时候很多记录的值用不到,这个时候备忘录方法则更好,可以减少记录的值,其特点是自上到下,记录少部分值。以LCS最长公共子串问题威力,分别给出两种实现。动态规划法:package longestCommonSubstring;public class LCS_1 { public stat...原创 2018-10-11 11:48:58 · 2903 阅读 · 1 评论 -
流水作业调度(动态规划)
了解性质,重在理解算法和设计逻辑package flowShop;import java.util.Arrays;//主要是Johnson法则的理解,代码很简单public class FlowShop { public static int flowShop(int a[],int b[],int c[]) { int n=a.length-1; Element d...原创 2018-10-11 09:57:49 · 3824 阅读 · 0 评论 -
分治概念——以二分查找为例
上次总结递归问题时发现全部总结在一起篇幅太长,所以这次先梳理概念,然后分别分析实现分治的经典算法。分治概念分治:分而治之,经过分解,解决,合并三个过程。分解(Divide):将原问题分解为子问题解决(Conquer):求解子问题合并(Combine):组合子问题的解得到原问题的解使用条件:问题的规模缩小到一定程度就可以容易地解决问题可以分解为若干个规模较小的相同问题(分了有意义),...原创 2018-09-23 14:33:55 · 541 阅读 · 0 评论 -
经典递归问题与动态规划
参考链接:https://blog.youkuaiyun.com/summer070825/article/details/76572434 http://www.cnblogs.com/DarrenChan/p/8734203.html一些经典递归问题斐波那契数列问题经典生兔子问题,不再赘述。 从该算法改进过程看递归问题的优化求解方式。 version 1:long Fibonac...原创 2018-09-17 17:32:27 · 880 阅读 · 0 评论 -
排序算法 Sorting Algorithm(二)
快速排序(QUICK-SORT)QUICK-SORT(A, p, r) if p<r then q <-PATITION(A, p, r) QUICK-SORT(A, p, q) QUICK-SORT(A, q+1, r)QUICK-SORT (A, n)PARTITION(A, p ,r) if r ...原创 2018-09-12 17:54:52 · 227 阅读 · 0 评论 -
排序算法 Sorting Algorithm(一)
练习下算法规范描述问题和伪代码表示Input: sequence 〈a1, a2, …, an〉of numbers. Output: permutation 〈a’1, a’2, …, a’n〉Such that a’1≤a’2≤…≤a’n. Example: Input: 8 2 4 9 3 6 Output: 2 3 4 6 8 9插入排...原创 2018-09-10 11:05:41 · 1278 阅读 · 0 评论 -
优先队列与堆排序
PriorityQueue优先级队列中的元素可以按照任意的顺序插入,却总是按照排序的顺序进行检索。无论何时调用remove方法,总会获得当前优先级队列中的最小元素(其实是返回堆顶元素),但并不是对所有元素都排序。它是采用了堆(一个可以自我调整的二叉树),执行增加删除操作后,可以让最小元素移动到根。堆排序复习package sort;import java.util.Arrays;pu...原创 2019-02-26 16:25:42 · 292 阅读 · 0 评论