Algorithm and Data Structure
文章平均质量分 66
蓝色枫魂
一个做音乐的程序员,欢迎关注公众号【比特猫BitTom】,聊聊音乐、技术和人生~
展开
-
决战Leetcode: easy part(1-50)
本博客是个人原创的针对leetcode上的problem的解法,所有solution都基本通过了leetcode的官方Judging,个别未通过的例外情况会在相应部分作特别说明。欢迎互相交流!email: tomqianmaple@gmail.comTwo SumReverse IntegerPalindrome NumberRoman to IntegerLongest原创 2018-01-25 13:57:47 · 1697 阅读 · 0 评论 -
决战Leetcode: easy part(51-96)
本博客是个人原创的针对leetcode上的problem的解法,所有solution都基本通过了leetcode的官方Judging,个别未通过的例外情况会在相应部分作特别说明。欢迎互相交流!email: tomqianmaple@gmail.com后续更多的easy题已经不属于Top Interview Questions,所以现在就不集中精力去做了,只做到目前的100题左右。...原创 2018-02-09 21:45:58 · 683 阅读 · 0 评论 -
动态规划(Dynamic Programming)算法与LC实例的理解
动态规划(Dynamic Programming)算法与LC实例的理解希望通过写下来自己学习历程的方式帮助自己加深对知识的理解,也帮助其他人更好地学习,少走弯路。也欢迎大家来给我的Github的Leetcode算法项目点star呀~~动态规划(Dynamic Programming)算法与LC实例的理解DP是什么基本定义帮助理解的经典问题:硬币问题第二个经典问题:斐波那契数列...原创 2018-05-10 20:52:36 · 4045 阅读 · 0 评论 -
Leetcode——二叉树常考算法整理
二叉树常考算法整理希望通过写下来自己学习历程的方式帮助自己加深对知识的理解,也帮助其他人更好地学习,少走弯路。也欢迎大家来给我的Github的Leetcode算法项目点star呀~~二叉树常考算法整理前言二叉树的类型算法分类遍历(Traversal)问题先序、中序与后序遍历利用两种遍历结果构造二叉树递归问题二叉树最大深度二叉树最小深度平衡二叉树判断相同树对称...原创 2018-05-28 16:43:22 · 4747 阅读 · 0 评论 -
BFS与DFS简介与LC实例
BFS与DFS常考算法整理PrefaceBFS(Breath-First Search,广度优先搜索)与DFS(Depth-First Search,深度优先搜索)是两种针对树与图数据结构的遍历或搜索算法,在树与图相关算法的考察中是非常常见的两种解题思路。BFS与DFS常考算法整理Definition of DFS and BFSHow to Implement DFS a...原创 2018-06-21 13:03:10 · 2206 阅读 · 1 评论 -
Leetcode——回溯法常考算法整理
Leetcode——回溯法常考算法整理PrefaceLeetcode——回溯法常考算法整理DefinitionWhy & When to Use BacktrakcingHow to Use BacktrackingLeetcode ProblemsN-QueensPermutations IICombinationsSudoku Solver...原创 2018-07-06 11:55:40 · 921 阅读 · 0 评论 -
哈希表简介(Intorduction to Hash Table)
哈希表简介(Intorduction to Hash Table)作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢大家的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录哈希表简介(Intorduction to Hash Table)哈希的动机符号表键的集合哈希表的...原创 2018-11-09 13:02:21 · 986 阅读 · 0 评论 -
红黑树简介(Introduction to Red-black tree)
红黑树简介(Introduction to Red-black tree)作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢你们的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录红黑树简介(Introduction to Red-black tree)定义查找操作分析...原创 2018-11-09 07:30:26 · 535 阅读 · 0 评论 -
最小生成树问题(Minimum Spanning Trees, MST)
最小生成树问题(Minimum Spanning Trees, MST)作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢大家的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录最小生成树问题(Minimum Spanning Trees, MST)问题定义生成MST的...原创 2018-11-12 10:59:49 · 3602 阅读 · 0 评论 -
最短路径问题算法(Shortest Path Problems' Algorithms)
最短路径问题算法作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢你们的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录最短路径问题算法单源最短路径问题设定引入Bellman-Ford算法DAG的单源最短路径算法Dijkstra算法(迪杰斯特拉算法)多源多目标最短路径...原创 2018-12-11 12:24:24 · 4236 阅读 · 0 评论 -
最大流-最小分割问题(Max Flow and Min Cut Problem)
最大流-最小分割问题(Max Flow and Min Cut Problem)作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢你们的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录最大流-最小分割问题(Max Flow and Min Cut Problem)引入...原创 2018-12-12 06:15:43 · 10252 阅读 · 0 评论 -
常见排序算法——七大比较类排序算法(Seven Most Common Sorting Algorithm)
算法 最坏复杂度 平均复杂度 最好复杂度 空间复杂度 稳定性 选择排序 O(n2n^2) O(n2n^2) O(n2n^2) O(1) 不稳定 插入排序 O(n2n^2) O(n2n^2) O(nn) O(1) 稳定 希尔排序 O(nlog(n))nlog(n))~O(n2n^2) O(n1.3n^{1.3}) O(n原创 2017-08-29 23:29:23 · 809 阅读 · 0 评论 -
剑指Offer——跳台阶
/** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月10日 *///一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。//思路: 首先穷举一下到达最后一级台阶的情况,分析原创 2017-09-08 23:14:48 · 284 阅读 · 0 评论 -
剑指offer——包含min函数的栈
import java.util.ArrayList; import java.util.Stack; /** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月18日 */ //要求:定义栈的数据结构,请原创 2017-08-21 19:03:24 · 280 阅读 · 0 评论 -
剑指offer——调整数组顺序使奇数位于偶数前面
//要求:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变//思路:这个比较简单。首先遍历一次原数组,分别用两个数组把里面的奇数和偶数给提取出来,按顺序存放在两个数组里。之后将奇数数组和偶数数组按顺序分别输入到新数组中即可。import java.util.ArrayList;原创 2017-08-21 19:34:32 · 276 阅读 · 0 评论 -
剑指offer——二维数组中的查找
//要求:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。//思路:根据题意,得到一个元素从左到右,从上到下分别递增的矩阵。而如果我们用常规思路从从单纯地从第一行第一列去遍历,那肯定不是考察的目标。//我们可以想到,如果从最后一行,第一列的元素去遍历,那么此时当我们发现目标元素比当前原创 2017-08-21 19:47:56 · 256 阅读 · 0 评论 -
剑指offer——二叉树中和为某一值的路径
import java.util.ArrayList;/** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月20日 */ //输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 //原创 2017-08-22 15:17:42 · 218 阅读 · 0 评论 -
剑指offer——反转链表
/*思路: 想办法将链表的节点按照顺序存储在有序集合里,再逆序遍历反转指向即可,注意第一个元素的指向原本是指向第二个元素,逆序反转时要改成指向null。此处用了栈更加方便,直接将链表的元素依次压栈,再将栈中元素依次弹出,弹出过程,将每一个之前弹出的元素的next置为当前弹出的元素,最后一个元素置null即可。*/import java.util.ArrayList;import java.uti原创 2017-08-22 15:25:59 · 247 阅读 · 0 评论 -
剑指offer——从上往下打印二叉树
import java.util.ArrayList; /** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月18日 */ //要求:从上往下打印出二叉树的每个节点,同层节点从左至右打印。//思路:典型的原创 2017-08-21 19:31:55 · 244 阅读 · 0 评论 -
剑指offer——二叉搜索树的后序遍历序列
//要求:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。//思路:二叉搜索树后序序列的最后一个值是该树的根节点,而前面部分的值分别由左子树的全部值与右子树的全部值构成,右子树的全部值均大于根节点值,左子树大于根节点值,找左右字树的分界线(从左到右遍历序列,直到找到第一个比根节点大的结点,检查该结点往右的所有节原创 2017-08-21 19:37:19 · 217 阅读 · 0 评论 -
动态规划——硬币问题
package dynamic_programming;/** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月22日 *//* 问题:我们有无数个面值为1、3、5的硬币,试问给定目标值n,如何用最少的1、3、原创 2017-08-22 23:00:13 · 1905 阅读 · 0 评论 -
剑指offer——斐波那契数列
思路:斐波那契数列属于非常经典的递归问题,但也可以用循环做。/** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月10日 *///大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。//原创 2017-08-22 15:27:55 · 396 阅读 · 0 评论 -
剑指Offer——连续子数组的最大和
/** * @author Tom Qian * @email tomqianmaple@outlook.com * @github https://github.com/bluemapleman * @date 2017年8月22日 */ //要求:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了: // 在古老的一维模式识别中,常常需要原创 2017-08-26 20:34:58 · 288 阅读 · 0 评论 -
找出数组中第K个最大的数
//要求:给定一个无序的int型数组,找出其中第K大的数并输出 /* 思路: 既然是无序,首先就给它排个序,一般就用快排或者堆排序搞定吧。当然也有偷懒的Arrays.sort(arr),但是这就是耍小聪明了。然后假如是从小到大排序,就逆序遍历数组,若数组元素不重复,直接返回arr[arr.length-K]就可以了,但若考虑到可能有重复的情况,那就需要在遍历过程判断前一个数跟当前的数是否相原创 2017-08-26 20:39:47 · 1340 阅读 · 0 评论 -
贪心算法(greedy algorithms)
贪心算法(greedy algorithms)作者:Bluemapleman(tomqianmaple@outlook.com)麻烦不吝star和fork本博文对应的github上的技术博客项目吧!谢谢你们的支持!知识无价,写作辛苦,欢迎转载,但请注明出处,谢谢!文章目录贪心算法(greedy algorithms)引入问题活动选择(Activity Selection)哈夫曼编码(Hu...原创 2018-12-12 10:58:53 · 5492 阅读 · 0 评论