算法
文章平均质量分 93
wait_for_eva
longer
展开
-
算法-递归
#核心分析递归很简单:递:向下传递归:向上收束可以看做是到达边界后反弹,因此,递归边界是不可或缺的。组合思想递归的结构并不复杂,但是可谓威力强大的。不仅是因为神奇的结构性质,和许多巧妙的思想是分不开的。闭包拆包闭包是编程中的一大利器,思想层面上的影响也更加深远。正如日常的电子产品、自定向下的设计方式、程序代码中的接口设计等,我们都无需关心内部的实现,我们依然得心应手。思维上面,我倾向于将它看做:不同领域的环境变量控制。在递归过程中,每一层的结构可以这样划分当前层的结果计算原创 2021-04-22 16:41:18 · 123 阅读 · 0 评论 -
算法-堆
文章目录数据的维护栈的本质最大排序树数组树堆~~实战~~重排序数据的维护不考虑业务,数据本身的操作的确就是增删改查。抽象一层,其实就剩下了一个问题:如何在一个数据集中定位一个数据。快速定位,才能在同一个功能实现上,节省更多的资源,或者获取更高的效率。但现实场景下,会附加一个功能,那就是某种元素的快速获取。比如最大值,或者最小值,或者某种条件下的某种领域下的边界元素。栈的本质如果只是从结构的本质来说,其实就是一口狭窄的深水井,但是这个不是重点。不考虑维护的情况下,我们每次pop必然获取一个元原创 2020-07-11 19:56:20 · 233 阅读 · 0 评论 -
算法-递归与栈,延时计算
文章目录递归栈栈和递归双端队列的条件递归递归递归是什么,粗略来说,就是当以计算依赖上一步的结果。只有完成上一步的计算,才能进行当前的计算操作,步步依赖,直到最开始的明确的值。现在以leecode230来讲述一遍给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。很显然,只要经过中序遍历,然后取对应数组的第k−1k - 1k−1个元素即可。前序遍历: root→left→righ原创 2020-07-06 00:56:15 · 1690 阅读 · 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&3000可以看到,如果是偶数的话,也就是2n,n∈[1,+∞]2^n, n\in [1,...原创 2019-07-21 20:35:20 · 554 阅读 · 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 · 259 阅读 · 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 · 969 阅读 · 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 · 115 阅读 · 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 · 115 阅读 · 0 评论 -
算法-排序
选择排序基本思想: 挨个比较,每次选择最大(小)的直接顺序排列import redataString = input("input some data :\n")data = [int(x) for x in re.split(" +", dataString)]print("sort原创 2019-03-10 02:12:11 · 164 阅读 · 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 · 472 阅读 · 0 评论