算法专栏
文章平均质量分 82
蒹葭杰克
三天打鱼两条晒网,那么永远是菜鸡!
展开
-
递归 和 迭代 的 区别
一 概念:递归:程序调用自身的编程技巧,说白了就是函数自己调用自己。迭代:核心思想是通过可迭代对象,重复相同的算法。二 优缺点:递归优点:1)大问题化为小问题,可以极大的减少代码量;2)用有限的语句来定义对象的无限集合.;3)代码更简洁清晰,可读性更好递归缺点:1)由于使用系统堆栈,递归太深容易造成堆栈的溢出,且大量函数调用,运行效率也比迭代要差。迭...原创 2019-08-07 10:57:49 · 441 阅读 · 0 评论 -
300分钟搞定算法面试之常用数据结构
很多时候看到题目,如果你认真的思考,大都会得到一个直观的思路,跟着这个思路做会得到一个结果。但这只是第一步,很多时候first thought的结果并非最优的,甚至会有很多冗余。这个时候我们不能满足于仅仅跑通代码,得到一个预期的输出就ok了。否则我们很难得到有效的进步。我认为我们要再次审题,再次审视自己的代码,看看哪些地方的计算有冗余,可以优化,看看哪些概念可以转换,很多时候你换个角...原创 2019-08-26 23:49:34 · 3203 阅读 · 0 评论 -
常用数据结构算法之链表
同数组一样,链表也是一种线性数据结构,不同的是它通过引用字段将所有分离的元素链接在一起。在操作上,链表通常可以O(1)的时间复杂度完成插入和删除元素的操作,同时它不像数组,无法通过索引立即访问任意元素,只能通过头结点遍历的方式来访问,所以通常访问元素是O(n)时间复杂度。 这两点和数组正好相反。有两种常用的链表:单链表和双链表。1、单链表定义每个结点包含自身的值和到下个结点的引...原创 2019-08-30 09:39:29 · 231 阅读 · 0 评论 -
八大排序算法总结&时间复杂度&稳定性
选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。插入排序1.直接插入排序(稳定)原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:Void InsertSort(...原创 2012-11-19 10:47:51 · 13556 阅读 · 0 评论 -
leetcode 204计算质数
统计所有小于非负整数n的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。其实该题是一个数学问题,要用计算机编程做出来。只要你知道质数的概念,那么可能最先想到的是暴力解法。尽管它不是最优,但我们可以先实现出来(这里为了大家的理解,贴上概念,大于1的所有自然数中,只能被1和自身整除的数叫做质数)...原创 2019-09-10 10:51:33 · 109 阅读 · 0 评论 -
快排和归并的python实现
作为高效的排序算法,归并和快排常出现在面试中,让快速手写算法。下面贴出python版本#快速排序 分治和递归的思想 随机选一个基准点,比它小的放左边,比它大的放右边def quickSort(nums:list,low,high): if low >= high: return pivot = partition(nums,low,high...原创 2019-09-21 11:35:42 · 327 阅读 · 0 评论