算法
文章平均质量分 93
wait_for_eva
longer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法-递归
#核心分析 递归很简单: 递:向下传递 归:向上收束 可以看做是到达边界后反弹,因此,递归边界是不可或缺的。 组合思想 递归的结构并不复杂,但是可谓威力强大的。 不仅是因为神奇的结构性质,和许多巧妙的思想是分不开的。 闭包拆包 闭包是编程中的一大利器,思想层面上的影响也更加深远。 正如日常的电子产品、自定向下的设计方式、程序代码中的接口设计等,我们都无需关心内部的实现,我们依然得心应手。 思维上面,我倾向于将它看做:不同领域的环境变量控制。 在递归过程中,每一层的结构可以这样划分 当前层的结果计算原创 2021-04-22 16:41:18 · 203 阅读 · 0 评论 -
算法-堆
文章目录数据的维护栈的本质最大排序树数组树堆~~实战~~重排序 数据的维护 不考虑业务,数据本身的操作的确就是增删改查。 抽象一层,其实就剩下了一个问题:如何在一个数据集中定位一个数据。 快速定位,才能在同一个功能实现上,节省更多的资源,或者获取更高的效率。 但现实场景下,会附加一个功能,那就是某种元素的快速获取。 比如最大值,或者最小值,或者某种条件下的某种领域下的边界元素。 栈的本质 如果只是从结构的本质来说,其实就是一口狭窄的深水井,但是这个不是重点。 不考虑维护的情况下,我们每次pop必然获取一个元原创 2020-07-11 19:56:20 · 359 阅读 · 0 评论 -
算法-递归与栈,延时计算
文章目录递归栈栈和递归双端队列的条件递归 递归 递归是什么,粗略来说,就是当以计算依赖上一步的结果。 只有完成上一步的计算,才能进行当前的计算操作,步步依赖,直到最开始的明确的值。 现在以leecode230来讲述一遍 给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明: 你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。 很显然,只要经过中序遍历,然后取对应数组的第k−1k - 1k−1个元素即可。 前序遍历: root→left→righ原创 2020-07-06 00:56:15 · 1860 阅读 · 0 评论 -
算法-x&(x - 1)
x&(x−1)x \& (x - 1)x&(x−1) 都说这个操作是消去二进制中最后的1,到底怎么产生的呢。 简单数字的研究 假设二进制中只有一个1,是怎么样的呢? 偶数 # oct(4) # bin(4) 100 # bin(4 - 1) 011 # 4&3 000 可以看到,如果是偶数的话,也就是2n,n∈[1,+∞]2^n, n\in [1,...原创 2019-07-21 20:35:20 · 719 阅读 · 0 评论 -
算法-四数和
四数之和 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。 给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。 满足要求的四元组集合为: [ [-1, 0, 0, 1], ...原创 2019-07-15 13:15:03 · 329 阅读 · 1 评论 -
算法-计算器
问题 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 基本映射 table = {} table["1"] = "!@#" table["2"] = "abc" table["3"] = "def" table["4"] = "ghi" table["5"] = "jkl" table["6"] = ...原创 2019-07-15 11:11:40 · 1134 阅读 · 0 评论 -
算法-皇后
问题 nnn皇后问题,如何求解 攻击方式 单行 单列 丿对角 乀对角 编程条件 一行一个:行攻击 被占据的列不可用:列攻击 y=x+m⇒y−x=my = x + m \Rightarrow y - x = my=x+m⇒y−x=m:丿攻击 y=−x+n⇒y+x=ny = -x + n \Rightarrow y + x = ny=−x+n⇒y+x=n:乀攻击 额外条件 满足条件输出 ...原创 2019-07-14 21:50:06 · 171 阅读 · 0 评论 -
算法-递归
括号匹配 给定nnn对括号,打印全部合法组合。 class Solution(object): def __init__(self): self.result = [] def generateParenthesis(self, n): self._gen(0, 0, n, "") return self.result ...原创 2019-07-14 17:07:42 · 179 阅读 · 0 评论 -
算法-排序
选择排序 基本思想: 挨个比较,每次选择最大(小)的直接顺序排列 import re dataString = input("input some data :\n") data = [int(x) for x in re.split(" +", dataString)] print("sort原创 2019-03-10 02:12:11 · 240 阅读 · 0 评论 -
算法-苹果
问解 m个苹果n个篮,可空可满,不重复,问几何? def split(apple, basket): if apple < 0 or basket <= 0: return 0 if apple == 0 or basket == 1: return 1 if basket > apple: retur...原创 2018-11-03 14:37:14 · 543 阅读 · 0 评论
分享