
leetcode
小鹏酱
这个作者很懒,什么都没留下…
展开
-
回溯算法
原文链接:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-xiang-jie-by-labuladong-2/回溯算法框架:解决回溯算法的关键是想清楚如下几点:1.路径,已经经过的路径2.选择列表,当前可选择的列表3.终止条件基本框架代码:result = []def dfs(路径,选择列表): if 满足终止条件: result.append(路径) for 选择 in 选择列表:原创 2020-06-12 19:34:26 · 209 阅读 · 0 评论 -
python实现快速排序
Quick_Sort简介:快速排序是冒泡排序的一种改进,通过一趟排序将数据分割成独立的两部分,其中一部分的所有数据比另一部分都要小,然后按此方法对两部分进行快速排序。整个排序过程可以递归进行,直至最终序列为有序序列。特点:每一趟排序可以确定一个数字的最终位置。原理:(1)从数据中选取基准(2)分区,小于基准的数据移到左边,大于基准的数据移到右边(3)对基准左右两个子集,重复步骤一、二实...原创 2020-04-07 13:45:49 · 252 阅读 · 0 评论 -
python实现堆排序
堆排序概念:二叉堆,二叉堆本质上是一种完全二叉树,可以分为最大堆和最小堆两种。最大堆:任何一个父节点的值都大于等于其子节点的值;最小堆:任何一个父节点的值都小于等于其子节点的值。二叉堆的根节点叫堆顶,二叉堆的特点决定了最大堆的堆顶是整个堆数据中的最大值,最小堆的堆顶是整个堆数据中的最小值。堆的自我调整:插入节点:首先将节点插入到堆尾,然后判断新插入的节点与其父节点是否满足最大/小堆的概念...原创 2020-04-09 22:19:25 · 950 阅读 · 0 评论 -
广度优先遍历(BFS)和深度优先遍历(DFS)
BFS:思想:对于图中的初始节点,先遍历初始节点的一阶邻居,当初始节点的一阶邻居都被遍历完了之后,再遍历初始节点的二阶邻居,直至所有节点都被遍历完(或找到符合条件的节点)过程:三要素:(1)先入先出的一个容器:队列;(2)图中的节点:最好写成单独的一个类表示;(3)已访问集合:避免重复访问。算法过程:(1)首先将根节点放入队列中(2)取出队列中的第一个节点进行访问,并将其所有未被访问的邻居节点添加到队列中(3)若队列为空则算法结束时间复杂度:广度优先遍历算法的时间复杂度并不确定,取决于用原创 2020-06-11 15:00:56 · 374 阅读 · 0 评论 -
递归和动态规划的初步理解
首先通过斐波那契数列引出两个概念斐波那契数列:已知f(0)=0, f(1)=1, f(n)= f(n-1)+ f(n+2)分别用两种不同的思想求得 f(n)。1.递归:解决递归问题,首先要明确函数定义,然后寻找递归终止条件,最后要能够准确的写出递归子式。def F(n): if n == 0: return 0 if n == 1: return 1 return F(n-1) + F(n-2)但在上述递归代码中有好多是会重复计算的,为了原创 2020-06-03 10:53:59 · 202 阅读 · 0 评论 -
力扣刷题215.数组中的第K个最大元素(python)
215.数组中的第K个最大元素题目描述:在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-an-...原创 2020-04-10 10:44:26 · 897 阅读 · 0 评论