
算法研究
文章平均质量分 55
湾区人工智能
会多国语言的海归
展开
-
十大编程算法助程序员走上高手之路
https://www.runoob.com/w3cnote/the-friendship-algorithm-the-big-bang-theory.html算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快...转载 2018-06-20 18:50:49 · 345 阅读 · 0 评论 -
有向无环图DAG 拓扑排序 代码解释
目录: DAG定义 举例描述 实际运用 算法描述 算法实战 算法可视化 定义 在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological sorting)。每个顶点出现且只出现一次; 若A在序列中排在B的前面,则在图中不存在从B到A的路径。也可以定义为:拓扑排序是对有向无环图的顶点的一种排序,它使...原创 2018-10-20 13:30:56 · 1768 阅读 · 0 评论 -
四种二分法的区别:
二分法有几种变形: 585 山脉序列中的最大值first position of target457 Classical Binary Search458 Last Position of Target 他们的区别在于: mountainSequence二分也不能太死板呀,边界可以根据具体问题具体分析。一定要给left = m1 + 1,要不然会超时最后...原创 2018-10-16 12:30:55 · 1368 阅读 · 0 评论 -
二叉树中进行 BFS 和图中进行 BFS 最大的区别
二叉树中进行 BFS 和图中进行 BFS 最大的区别 就是二叉树中无需使用 HashSet(C++: unordered_map, Python: dict) 来存储访问过的节点(丢进过 queue 里的节点)因为二叉树这种数据结构,上下层关系分明,没有环(circle),所以不可能出现一个节点的儿子的儿子是自己的情况。但是在图中,一个节点的邻居的邻居就可能是自己了。 认识你是...转载 2018-10-08 18:40:07 · 362 阅读 · 0 评论 -
使用宽度优先搜索的常见场景
图的遍历 Traversal in Graph图的遍历,比如给出无向连通图(Undirected Connected Graph)中的一个点,找到这个图里的所有点。这就是一个常见的场景。LintCode 上的 Clone Graph 就是一个典型的练习题。更细一点的划分的话,这一类的问题还可以分为:层级遍历 Level Order Traversal 由点及面 Connected ...转载 2018-10-08 18:22:31 · 1233 阅读 · 0 评论 -
什么是 Stack Overflow,什么情况下会造成 Stack Overflow
转载于https://www.jiuzhang.com/tutorial/algorithm/444什么是递归深度递归深度就是递归函数在内存中,同时存在的最大次数。例如下面这段求阶乘的代码:int factorial(int n) { if (n == 1) { return 1; } return factorial(n - 1) * ...转载 2018-10-07 15:36:51 · 8778 阅读 · 0 评论 -
快速幂算法
快速幂算法基本原理计算x的n次方, 即计算x^nxn。由公式可知: x^n = x^{n/2} * x^{n/2}xn=xn/2∗xn/2。如果我们求得x^{n/2}xn/2, 则可以O(1)求出x^nxn, 而不需要再去循环剩下的n/2n/2次。以此类推,若求得x^{n/4}xn/4, 则可以O(1)求出x^{n/2}xn/2。。。。因此一个原本O(n)O(n)的问题,...转载 2018-10-05 18:56:44 · 286 阅读 · 0 评论 -
最长回文子串——Manacher 算法
0. 问题定义最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例:12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词)1. Brute-force 解法对于最长回文子串问题,最简单粗暴的办法是:找到字符串的所有子串,遍历每一个子串以验证它们是否为...转载 2018-10-05 14:36:38 · 215 阅读 · 0 评论 -
lintcode刷题 14. 二分查找,迭代和二分法Python实现
14. 二分查找描述给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。您在真实的面试中是否遇到过这个题? 是题目纠错样例在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。挑战如果数组中的整数个数超过了2^32,你的算...原创 2018-10-05 13:48:40 · 449 阅读 · 0 评论 -
什么是函数式编程思维?
我为什么要把我的知乎回答搬到这里呢……大概是太久没发东西了来凑数吧。作者:nameoverflow链接:https://www.zhihu.com/question/28292740/answer/100284611来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。函数式编程与命令式编程最大的不同其实在于:函数式编程关心数据的映射,命令式编程关心...转载 2018-10-03 20:57:15 · 412 阅读 · 0 评论 -
看视频课程的正确方法
正确打开九章算法课程的方式课前预习上课之前浏览一遍当前课程的内容。 a. 如果是算法班,最好是自己思考一下每道题的解法,如果时间不够,可以浏览一下每个题目的题意。这样非常有助于上课理解。 b. 如果是系统班,最好自己看看每个题目大意,想想自己要怎么设计。上课做笔记 上课时,准备一个本子,或者打印好上课PPT,以便于对每道题做好相应的笔记 笔记的重点要点 a. 每道题目老师的思...转载 2018-10-03 20:31:06 · 566 阅读 · 0 评论 -
各种常用排序算法的时间复杂度和空间复杂度
https://blog.youkuaiyun.com/jiajing_guo/article/details/69388331一、常用排序算法的时间复杂度和空间复杂度表格 二、特点 1.归并排序: (1)n大时好,归并比较占用内存,内存随n的增大而增大,但却是效率高且稳定的排序算法。(2)归并排序每次递归都要用到一个辅助表,长度与待排序的表长度相同,虽然递归次数是...转载 2018-07-28 09:29:26 · 31456 阅读 · 2 评论 -
快速排序多种方法代码Python
'''六、快速排序 QuickSort介绍:快速排序通常明显比同为Ο(n log n)的其他算法更快,因此常被采用,而且快排采用了分治法的思想,所以在很多笔试面试中能经常看到快排的影子。可见掌握快排的重要性。步骤:1.从数列中挑出一个元素作为基准数。2.分区过程,将比基准数大的放到右边,小于或等于它的数都放到左边。3.再对左右区间递归执行第二步,直至各区间只有一个数。...原创 2018-07-28 15:37:06 · 789 阅读 · 0 评论 -
Python实现经典七种排序算法
#2018-06-02 June Saturday the 22 week, the 153 day SZ#数组排序算法大全用Python3实现#参考https://www.cnblogs.com/zhizhan/p/4549099.html'''算法1:冒泡法:让两数比较大的值一直滚动到最右侧,类似泡泡一直往上飘每次滚动都要进行比较思路:步骤:1.比较相邻的元素。如果第一个比第二...原创 2018-06-02 15:13:14 · 289 阅读 · 0 评论 -
Python实现各种进制转换问题,so easy
Python实现进制转换问题,so easy********************十进制转其他进制*************************************#系统默认a,b值都是十进制a = 6b = 10print('decimal of a and b are:',a, b)print('binary of a and b are:',bin(a), bin(b)...原创 2018-06-06 13:39:21 · 453 阅读 · 0 评论 -
数据结构和算法分析英语生词整理
***********九章算法第二章:二分法和lgn算法 二分法(binary search) 时间复杂度 Time Complexity 递归 Recursion***********九章算法第三章:双指针法快速选择算法 Quick Select栈溢出Stack Overflow***********九章算法第四章开始接口(Interface)堆(heap)接...原创 2018-11-07 19:16:08 · 442 阅读 · 0 评论