![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
ForeverSen
为什么
怎么解决
如何避免
展开
-
图解排序算法之归并排序
基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。分而治之 可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现(也可采用迭代的方式...转载 2019-03-14 11:38:32 · 79 阅读 · 0 评论 -
LeetCode中典型的DFS问题
深度优先遍历DFS:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。DFS应用:使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,D...原创 2019-04-15 13:05:47 · 3954 阅读 · 0 评论 -
BFS问题及相关应用
LeetCode279. Perfect Square(Medium)题目描述:给定一个正整数n,求和为n的最小全平方数(例如,1,4,9,16,…)。Input: n = 12Output: 3Explanation: 12 = 4 + 4 + 4.Input: n = 13Output: 2Explanation: 13 = 4 + 9.解题思路:可以将每个整数看成图中的...原创 2019-04-13 13:46:25 · 446 阅读 · 0 评论 -
LeetCode中经典的排序问题
最近看完算法4第二章排序后,对LeetCode中的排序题目作了以下总结:堆排序:LeetCode215: 题目描述:找到未排序数组中的第k个最大元素。请注意,它是排序顺序中的第k个最大元素,而不是第k个不同元素。Input: [3,2,1,5,6,4] and k = 2 Output: 5Input: [3,2,3,1,2,4,5,5,6] ...原创 2019-04-03 13:28:50 · 902 阅读 · 0 评论 -
拓扑排序
拓扑排序207. Course Schedule题目描述:共有n门课程你必须参加,标签从0到n-1。有些课程可能有先决条件,例如,要参加课程0,您必须首先参加课程1,这表示为一对:[0,1]考虑到课程总数和先决条件对列表,您是否可以完成所有课程?可以返回true,不可以返回falseInput: 2, [[1,0]] Output: trueInput: 2, [[1,0],[0...原创 2019-04-08 13:34:09 · 153 阅读 · 0 评论 -
用Java实现十大经典排序
也可以参考这里,很详细排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序。内部排序是数据记录在内存中进行排序。而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:...转载 2019-03-28 23:25:21 · 602 阅读 · 0 评论 -
二分查找
最近在看算法第四版,其中有说到二分搜索,也就是二分查找,也在leetcode上刷题,觉得也算是一种比较厉害的算法思想吧,总结下:定义二分查找又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。优缺点...原创 2019-04-01 09:27:27 · 1011 阅读 · 0 评论 -
算法中的红黑树
最近在学符号表,前面相继学了符号表中的二叉查找树,2-3查找树,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)定义红黑树的主要是想对2-3查找树进行编码,尤其是对2-3查找树中的3-...转载 2019-03-26 15:06:02 · 372 阅读 · 0 评论 -
求解数组中第k个最大元素
今天在刷leetcode215题,碰到求解TopK Elements问题,一共有三种方法,总结一下:题目描述:找到未排序数组中的第k个最大元素。请注意,它是排序顺序中的第k个最大元素,而不是第k个不同元素。Input: [3,2,1,5,6,4] and k = 2 Output: 5Input: [3,2,3,1,2,4,5,5,6] and k = 4 Output:...原创 2019-03-17 13:50:10 · 265 阅读 · 0 评论 -
图解排序算法之堆排序
预备知识堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:同时,我们对堆中的结点按层进行编号,...转载 2019-03-16 21:37:03 · 101 阅读 · 0 评论 -
贪心算法及LeetCode中相关问题
开始学习贪心算法思想,并在LeetCode上进行相关tag的刷题原创 2019-05-31 13:22:45 · 1451 阅读 · 3 评论