2,3,4,5,6,7,8,9,10,11,12,13,14
当前位置: 首页  - 标签“数据结构与算法“ - 列表

数据结构与算法

数据结构与算法42 | 动态规划实战:如何实现搜索引擎中的拼写纠错功能?

42 | 动态规划实战:如何实现搜索引擎中的拼写纠错功能?

在Trie 树那节我们讲过,利用 Trie 树,可以实现搜索引擎的关键词提示功能,这样可以节省用户输入搜索关键词的时间。实际上,搜索引擎在用户体验方面的优化还有很多,比如你可能经常会用的拼写纠错功能。当你在搜索框中,一不小心输错单词时,搜索引擎会非常智能地检测出你的拼写错误,并且用对应的正确单词来进行搜索。作为一名软件开发工程师,你是否想

数据结构与算法41 | 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题

41 | 动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题

上一节,我通过两个非常经典的问题,向你展示了用动态规划解决问题的过程。现在你对动态规划应该有了一个初步的认识。今天,我主要讲动态规划的一些理论知识。学完这节内容,可以帮你解决这样几个问题:什么样的问题可以用动态规划解决?解决动态规划问题的一般思考过程是什么样的?贪心、分治、回溯、动态规划这四种算法思想又有什么区别和联系?理论的东西都比较抽

数据结构与算法40 | 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?

40 | 初识动态规划:如何巧妙解决“双十一”购物时的凑单问题?

淘宝的“双十一”购物节有各种促销活动,比如“满 200 元减 50 元”。假设你女朋友的购物车中有 n 个(n>100)想买的商品,她希望从里面选几个,在凑够满减条件的前提下,让选出来的商品价格总和最大程度地接近满减条件(200 元),这样就可以极大限度地“薅羊毛”。作为程序员的你,能不能编个代码来帮她搞定呢?要想高效地解决这个问题

数据结构与算法39 | 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

39 | 回溯算法:从电影《蝴蝶效应》中学习回溯算法的核心思想

我们在第 31 节提到,深度优先搜索算法利用的是回溯算法思想。这个算法思想非常简单,但是应用却非常广泛。它除了用来指导像深度优先搜索这种经典的算法设计之外,还可以用在很多实际的软件开发场景中,比如正则表达式匹配、编译原理中的语法分析等。除此之外,很多经典的数学问题都可以用回溯算法解决,比如数独、八皇后、0-1 背包、图的着色、旅行商问题、

数据结构与算法38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

38 | 分治算法:谈一谈大规模计算框架MapReduce中的分治思想

MapReduce 是 Google 大数据处理的三驾马车之一,另外两个是 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。尽管开发一个 MapReduce 看起来很高深,感觉跟我们遥不可及。实际上,万变不离其宗,它的本质就是我们今天要学的这种算法思想,分治算法。如何理解分

数据结构与算法37 | 贪心算法:如何用贪心算法实现Huffman压缩编码?

37 | 贪心算法:如何用贪心算法实现Huffman压缩编码?

基础的数据结构和算法我们基本上学完了,接下来几节,我会讲几种更加基本的算法。它们分别是贪心算法、分治算法、回溯算法、动态规划。更加确切地说,它们应该是算法思想,并不是具体的算法,常用来指导我们设计具体的算法和编码等。贪心、分治、回溯、动态规划这 4 个算法思想,原理解释起来都很简单,但是要真正掌握且灵活应用,并不是件容易的事情。所以,接下

数据结构与算法36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?

36 | AC自动机:如何用多模式串匹配实现敏感词过滤功能?

很多支持用户发表文本内容的网站,比如 BBS,大都会有敏感词过滤功能,用来过滤掉用户输入的一些淫秽、反动、谩骂等内容。你有没有想过,这个功能是怎么实现的呢?实际上,这些功能最基本的原理就是字符串匹配算法,也就是通过维护一个敏感词的字典,当用户输入一段文字内容之后,通过字符串匹配算法,来查找用户输入的这段文字,是否包含敏感词。如果有,就用“

数据结构与算法35 | Trie树:如何实现搜索引擎的搜索关键词提示功能?

35 | Trie树:如何实现搜索引擎的搜索关键词提示功能?

搜索引擎的搜索关键词提示功能,我想你应该不陌生吧?为了方便快速输入,当你在搜索引擎的搜索框中,输入要搜索的文字的某一部分的时候,搜索引擎就会自动弹出下拉框,里面是各种关键词提示。你可以直接从下拉框中选择你要搜索的东西,而不用把所有内容都输入进去,一定程度上节省了我们的搜索时间。尽管这个功能我们几乎天天在用,作为一名工程师,你是否思考过,它

数据结构与算法34 | 字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?

34 | 字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?

上一节我们讲了 BM 算法,尽管它很复杂,也不好理解,但却是工程中非常常用的一种高效字符串匹配算法。有统计说,它是最高效、最常用的字符串匹配算法。不过,在所有的字符串匹配算法里,要说最知名的一种的话,那就非 KMP 算法莫属。很多时候,提到字符串匹配,我们首先想到的就是 KMP 算法。尽管在实际的开发中,我们几乎不大可能自己亲手实现一个

数据结构与算法33 | 字符串匹配基础(中):如何实现文本编辑器中的查找功能?

33 | 字符串匹配基础(中):如何实现文本编辑器中的查找功能?

文本编辑器中的查找替换功能,我想你应该不陌生吧?比如,我们在 Word 中把一个单词统一替换成另一个,用的就是这个功能。你有没有想过,它是怎么实现的呢?当然,你用上一节讲的 BF 算法和 RK 算法,也可以实现这个功能,但是在某些极端情况下,BF 算法性能会退化的比较严重,而 RK 算法需要用到哈希算法,设计一个可以应对各种类型字符的哈希

点击下拉
用户登录