何哥的博客

想专注于Java Server端

算法设计方法4:动态规划经典例题总结

前言:各大公司关于动态规划的笔试题太多了,必须得掌握。上篇文章提过,使用动态规划的五大步骤: 1. 判题题意是否为找出一个问题的最优解 2. 将原问题分解为子问题 3. 从下往上分析问题 ,找出这些问题之间的关联(状态转移方程),如何从一个或多个已知状态求出另一个未知状态的值。(递推型) 4....

2019-03-05 03:54:26

阅读数 42

评论数 0

算法设计方法3:动态规划

前言:动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。在各大公司的笔试题中,有关动态规划的题目会经常出现。有很多问题,用贪婪法和分治法无法简洁而高效的解决,但是用动态规划就可以。比如0/1背包问题,其中物品不...

2019-03-04 03:46:33

阅读数 92

评论数 0

算法设计方法2:分而治之

前言:分而治之策略不仅被君主和殖民者成功地用来统治殖民地,也可以用来设计有效的计算机算法。分而治之方法把一个问题的实例分解为若干个小型而独立的实例,从而可以在并行计算机的不同处理器上完成。分而治之方法可以解决如下问题:最大最小问题、矩阵乘法、一个娱乐数学—残缺棋盘问题、排序、选择和一个计算几何问题...

2019-03-03 03:48:18

阅读数 45

评论数 0

算法设计方法1:贪心算法

前言:走出数据结构的世界,进入算法设计的天地 。为了满足人们对大数据量信息处理的渴望,为解决各种实际问题,计算机算法学得到了飞速的发展,线性规划、动态规划、贪心策略等一系列运筹学模型纷纷运用到计算机算法学中,产生了解决各种现实问题的有效算法。虽然设计一个好的求解算法更像是一门艺术而不像是技术,但仍...

2019-03-02 23:14:50

阅读数 62

评论数 0

数据结构基础27:DFS和BFS算法总结

前言:图的遍历算法DFS和BFS是许多图算法的基础,所以有必要单独拎出来总结一下。DFS和BFS主要是运用于对于图和树的搜索,很多问题模型都是可以建模变成一个图或者树的,所以差不多不少问题都会涉及到这两个。比如求二叉树深度,可以是递归的方法,属于DFS(深度优先搜索);另一种方法是按照层次遍历,属...

2019-02-16 05:06:04

阅读数 52

评论数 0

数据结构基础26:图

前言:线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系。而图是一种比线性表和树更复杂的数据结构,在图中,结点之间的关系是任意的,任意两个数据元素之间都可能相关,图是一种“多对多”的数据结构。在计算机科学中,图是最灵活的数据结构之一,很多问题都可以使用图模型进行...

2019-02-15 05:36:23

阅读数 52

评论数 0

Mysql创建索引

一、MySQL 索引 1、MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而...

2019-02-14 09:38:47

阅读数 65

评论数 0

Mysql的常用引擎

前言:在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyISAM。 一、为什么要合理选择数据库存储引擎? 1、MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同...

2019-02-14 08:38:49

阅读数 54

评论数 0

深入理解数据库索引

前言:数据库和数据库索引这两个东西是在服务器端开发领域应用最为广泛的两个概念,熟练使用数据库和数据库索引是后端开发人员在行业内生存的必备技能。数据库索引是用来提高数据库表的数据查询速度的。 一、索引出现背景 在数据库系统的使用过程当中,数据的查询是使用最频繁的一种数据操作。最基本的查询算法当然...

2019-02-14 07:19:17

阅读数 39

评论数 0

数据结构基础25:B树和B+树的区别

前言:B-树,即为B树。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是一种树。而事实上是,B-tree就是指的B树。数据库索引的数据结构基础就是B+树,B+树是平衡n叉排序树,...

2019-02-13 05:43:05

阅读数 63

评论数 0

数据结构基础24:索引查找和二分查找

一、查找技术的分类 图片转自网络二、顺序查找(无序表) 顺序查找的原理很简单,就是遍历整个列表,逐个进行记录的关键字与给定值比较,若某个记录的关键字和给定值相等,则查找成功,找到所查的记录。如果直到最后一个记录,其关键字和给定值比较都不等时,则表中没有所查的记录,查找失败。 时间复杂度是O(...

2019-02-13 05:42:58

阅读数 46

评论数 0

数据结构基础23:TopN问题

前言:如果实时展现热门文章,比如近8小时点击量最大的文章前100名。如果是你来开发这个功能,你怎么做? 1、TopN排行榜问题描述: 在系统中,我们经常会遇到这样的需求:将大量(比如几十万、甚至上百万)的对象进行排序,然后只需要取出最Top的前N名作为排行榜的数据,这即是一个TopN算法。常见...

2019-02-13 05:42:45

阅读数 27

评论数 0

数据结构基础22:堆应用之堆排序

前言:堆可以用来实现n个元素的排序,所需时间为O(nlogn)。先用n个待排序的元素来初始化一个大根堆,然后从堆中逐个提取(即删除)最大元素。结果,这些元素按照非递增的顺序排列。初始化的时间为O(n),每次删除的时间为O(logn),因此总时间为O(nlogn)。这个排序时间比普通排序算法的如冒泡...

2019-02-12 02:38:22

阅读数 52

评论数 0

数据结构基础21:堆

前言:堆是实现优先级队列效率很高的数据结构,堆其实是一颗特殊的完全二叉树,用下标从1开始的数组表示最有效率。在JVM中,堆是用来存储对象实例以及数组值的区域,可以认为Java中所有通过new创建的对象的内存都在此分配。堆是所有线程共享的,因此在其上进行对象内存的分配均需要进行加锁,这也导致new对...

2019-02-12 01:53:59

阅读数 36

评论数 0

数据结构基础20:字典树的应用场景

(1) 字符串检索 事先将已知的一些字符串(字典)的有关信息保存到trie树里,查找另外一些未知字符串是否出现过或者出现频率。 举例: 1.给出N 个单词组成的熟词表,以及一篇全用小写英文书写的文章,请你按最早出现的顺序写出所有不在熟词表中的生词。 2.给出一个词典,其中的单词为不良单词。单词均...

2019-02-03 01:25:48

阅读数 41

评论数 0

数据结构基础19:字典树

前言:字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。Trie 的强大之处就在于它的时间复杂度。它的插入和查询时间复杂度都为 O(k) ,其...

2019-02-03 01:21:56

阅读数 34

评论数 0

数据结构基础18:二叉搜索树的搜索、插入、删除和升序输出

前言: HashMap 的底层实现中用到了红黑树,红黑树其实是二叉搜索平衡树,我们先了解一下二叉搜索树。 哈希表的字典操作(查找、插入和删除)的平均时间复杂度为Θ(1),而这些操作在坏的情况下能的时间与字典的元素个数呈线性关系。当HashMap的链表长度超过8时,就需要用到平衡二叉搜索树红黑树,...

2019-02-02 23:26:29

阅读数 45

评论数 0

数据结构基础17:二叉树应用之算术表达式求值

前言:二叉树的一种应用是无歧义地表示代数、关系或逻辑表达式。在上个世纪20年代初期,波兰的逻辑学家发明了一种命题逻辑的特殊表示方法,允许从公式中删除所有括号,称之为波兰表示法。但是,与原来带括号的公式相比,使用波兰表示法降低了公式的可读性,没有得到广泛的使用。在计算机出现后,这一表示法就很有用了,...

2019-02-01 02:33:28

阅读数 67

评论数 0

数据结构基础16:递归

前言:遍历二叉树,是学习树这种数据结构首先要理解的一种基本操作,比较简单地方式就是用递归去遍历。鉴于递归这种调用方法有一定的特殊性,本篇博客就来介绍一下递归的定义以及几个递归的经典算法题。 一说起递归,我想每个人都不陌生。举个从小就听过的例子:从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,...

2019-01-29 00:49:37

阅读数 42

评论数 0

数据结构基础15:二叉树的前序、中序和后序遍历

前言:到目前为止,我们已经介绍了线性数据结构和表数据机构(哈希表)。这些数据机构一般都不适合表示具有层级结构的数据。在层次化的元素之间有祖先—后代、上级—下属、整体—部分以及其他类似的关系。 一、树的介绍 1、树的定义: 树状图是一种数据结构,它是由n(n>=0)个...

2019-01-28 19:56:49

阅读数 48

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭