Data Structures and Algorithms
文章平均质量分 91
BlackStar_L
Keep Coding, Reading and Writing, for the Data Scientist
展开
-
算法总结10 线段树
如果后面又来了一个更新,破坏了于lazy tag的区间,那么这个区间就得继续递归更新了。更新于查询,如果暴力去做,每个操作都是O(n)的。所以我们需要提升效率。挑选O(n)个特殊区间:build。原创 2023-09-14 23:57:11 · 417 阅读 · 0 评论 -
算法总结9 高阶DP
以该题作为模板,完成后面的所有题。原创 2023-09-14 23:56:32 · 338 阅读 · 0 评论 -
算法刷题总结 (十一) 二叉树
二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个节点最多只能有两棵子树,且有左右之分。二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个节点。原创 2023-05-30 21:42:39 · 1395 阅读 · 0 评论 -
算法刷题总结 (七) 双指针
其实双指针是一个很宽泛的概念,就好像数组,链表一样,其类型会有很多很多, 比如二分法经常用到左右端点双指针。滑动窗口会用到快慢指针和固定间距指针。 因此双指针其实是一种综合性很强的类型,类似于数组,栈等。 但是我们这里所讲述的双指针,往往指的是某几种类型的双指针,而不是“只要有两个指针就是双指针了”。有了这样一个算法框架,或者算法思维,有很大的好处。它能帮助你理清思路,当你碰到新的问题,在脑海里进行搜索的时候,双指针这个词就会在你脑海里闪过。原创 2023-04-18 00:06:10 · 3068 阅读 · 1 评论 -
算法刷题总结 (六) 前缀树 | 字典树 | 单词查找树
字典树英文表示为:trie ,它来自于 retrieval 的中间部分。在wiki百科中,trie表示tree的意思,它属于多叉树结构,是一种哈希树的变种,典型应用场景是统计、保存大量的字符串,经常被搜索引擎系统用于文本词频统计。它的优点是利用字符串的公共前缀来减少查找时间,最大限度的减少无谓字符串的比较和存储空间。原创 2023-04-10 15:58:19 · 1554 阅读 · 0 评论 -
算法刷题总结 (五) 字符串操作
字符串是 Python 中最常用的数据类型使用频率非常高,并且它非常灵活有非常多的操作,且拥有非常强大的内置库函数。字符串经常作为考题出现,或者为其他主题考题的某一部分,所以熟练的掌握字符串的相关操作对自己编程解决问题的能力的提升至关重要。原创 2023-03-23 16:56:47 · 2012 阅读 · 6 评论 -
算法刷题总结 (四) 动态规划
动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。动态规划中每一个状态一定是由上一个状态推导出来的。而贪心算法不同,贪心没有状态推导,而是从局部直接选最优的。动态规划问题,将被拆解为如下五步:1. 确定dp数组(dp table)以及下标的含义2. 确定递推公式3. dp数组如何初始化4. 确定遍历顺序5. 举例推导dp数组原创 2023-03-15 13:29:40 · 3801 阅读 · 14 评论 -
算法刷题总结 (三) 贪心算法
贪心算法是遵循在每个阶段做出局部最优选择从而解决启发式(近似最优解)问题的任何算法。因为贪心策略在很多情况下不会产生最优解,可能大部分是近似最优解,也有小部分可能是最糟糕的结果。但对某些特殊问题,采用贪心可以取到最好的效果,即可以从局部最优可以推导到全局最优。这篇文章会对贪心算法进行详细的讲解。原创 2023-03-15 20:34:24 · 1250 阅读 · 11 评论 -
算法刷题总结 (二) 回溯与深广搜与并查集算法
回溯与深广搜有相似的做法和理解,所以把他们放在同一个文章之中,文章看似篇幅很长,实际上,题目都是相似的,顺着章节来可以很快的掌握这个算法内容,以后碰到这样的相似题目,会很快想出思路。回溯是递归的纵横拓展,主要是递归(纵)+局部暴力枚举(横)。所以可以从递归和暴力两个方面来拆解回溯问题。原创 2023-03-23 16:40:30 · 1452 阅读 · 4 评论 -
算法刷题总结 (一) 数组
数组相关的算法,暴力求解,二分法,双指针法,滑动窗口,状态模拟原创 2022-09-16 02:35:15 · 1864 阅读 · 2 评论 -
一、数组经典题型
暴力求解,二分查找,双指针,滑动窗口,过程模拟原创 2022-09-16 01:45:24 · 1886 阅读 · 0 评论 -
1.3 数学基础:函数与证明方法(Mathematical Foundations: functions and proof techniques)
第一章 - 算法基础与算法分析 fundamentals of algorithms and algorithm analysis1.3、数学基础:函数与证明方法 (functions and proof techniques)1.3.1、函数(functions)1.3.1.1、函数基本术语和例子 (Functions, basic terminology and examples)(1)、函数 (Functions)(2)、函数的定义 (Function: definition)(3)、函数的特殊关系翻译 2022-01-13 23:40:13 · 864 阅读 · 0 评论 -
1.2、数学基础:集合与关系 (Mathematical foundations: sets and relations)
第一章 - 算法基础与算法分析 fundamentals of algorithms and algorithm analysis1.2 Mathematical foundations: sets and relations翻译 2022-01-13 22:25:33 · 1137 阅读 · 0 评论 -
1.1、数学基础:逻辑 (Mathematical foundations: logic)
第一章 - 算法基础与算法分析 fundamentals of algorithms and algorithm analysis1.1、数学基础:逻辑 (Mathematical foundations: logic)1.1.1、命题逻辑 - Propositional logic(1)、命题(Propositions)(2)、命题记法(Notation)(3)、逻辑运算符(Logic Operator)(3.1)、否定(Negation) - 逻辑 非(3.2)、连接、合取 (Conjunction)翻译 2021-12-17 18:54:24 · 1997 阅读 · 0 评论 -
练习题1-1:逻辑
1-1 Worksheet Logic问题一: 命题 (Propositions)判断下列每个句子是否为命题. 如果是一个命题,说明它的真值,否则解释为什么他不是命题.(1). Is this a proposition?(2). 2 + 4 = 7(3). x + 5 = 6(4). The School of Computing is part of the Faculty of Engineering and Physical Sciences.(5). Stop!!不是命题,该翻译 2021-12-17 18:49:35 · 397 阅读 · 6 评论