摘要: ########################################## """ 数据结构: 1,用Python代码简单实现一个栈。实现pop/push及max方法,要求能在O(1)时间内取得最大值。 排序算法: 写个快速排序热热身,分析一下复杂度,如果不使用额外的空间,应该怎么写?快排 阅读全文
posted @ 2020-02-23 03:14 技术改变命运Andy 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 上一篇博文我们记录了数据结构与算法的基础知识,这篇博文我们再来看下算法的进阶。 # 贪心算法 贪心算法 (又称贪婪算法) 是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。 贪心算法并不保证会得到最优解,但是在某些问题上贪心 阅读全文
posted @ 2020-02-23 03:13 技术改变命运Andy 阅读(179) 评论(0) 推荐(0) 编辑
摘要: # 动态规划 动态规划(Dynamic Programming)是一种解决复杂问题的算法设计技术。它主要用于优化问题,即在给定的约束条件下,寻找最优解(最大值或最小值)。动态规划的核心思想是将复杂问题拆解为一系列子问题,并利用子问题的解来构建原问题的解。 ``` class Solution: de 阅读全文
posted @ 2020-02-23 03:11 技术改变命运Andy 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 为什么我没有学过算法,但是我写业务代码的时候并没有什么影响? 而且我看了那些算法的思路,我认为我写业务代码一辈子也用不到, 这让我很困惑,学习算法有用吗? 难道就是面试的时候用来装b用的吗? 我感觉就像八股文一样, 临时写算法这件事最低级了,真正考一个人本事的是给个实际的在做的问题,参考资料和编程系 阅读全文
posted @ 2020-02-23 03:08 技术改变命运Andy 阅读(152) 评论(0) 推荐(0) 编辑
摘要: # 排序算法 排序算法, 我们想要把线性表中的无序序列,排成有序序列,的算法,就是排序算法, 排序算法的稳定性 举例:假设对下面的元组要以他们的第一个数字来排序。 (4, 1) (3, 1) (3, 7)(5, 6) 如果你排序之后,(3, 1) (3, 7)和原来的顺序一样,就是稳定的,否则就是不 阅读全文
posted @ 2020-02-23 01:44 技术改变命运Andy 阅读(201) 评论(0) 推荐(0) 编辑
摘要: # 三、线性结构 ##(1)栈 1、定义:栈是一个数据集合,可以理解为只能在一端进行插入或者删除操作的列表。 2、栈的特点:后进先出(last-in,first-out),简称LTFO表 这种数据结构的特点: 就是像是杯子或者是弹夹,电梯, 存储的时候从底部开始,读取的时候从顶部开始,具备这种特点就 阅读全文
posted @ 2020-02-23 01:43 技术改变命运Andy 阅读(151) 评论(0) 推荐(0) 编辑
摘要: # 线性表 线性表是最基本的数据结构之一,在实际程序中应用非常广泛,它还经常被用作更复杂的数据结构的实现基础。 根据线性表的实际存储方式,分为两种实现模型: - 顺序表, - 链表, 下面分别进行研究, # 顺序表的研究 顺序表的基本形式,数据元素本身连续存储, 第一种情况: 如果顺序表的存储元素都 阅读全文
posted @ 2020-02-23 01:42 技术改变命运Andy 阅读(428) 评论(0) 推荐(0) 编辑
摘要: # 一、树 1、什么是树? 树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 它具有以下的特点: 每个节点有零个或多个子节点; 没有父节点的节点称为根节点; 每一个非根节点有且只有一个父节点 阅读全文
posted @ 2020-02-23 01:11 技术改变命运Andy 阅读(248) 评论(0) 推荐(0) 编辑
摘要: ######################################################### """ 一、列表查找 1、列表查找:从列表中查找指定元素 输入:列表、待查找元素 输出:元素下标或未查找到元素 2、顺序查找:从列表第一个元素开始,顺序进行搜索,直到找到为止。 返回找 阅读全文
posted @ 2020-02-23 01:08 技术改变命运Andy 阅读(234) 评论(0) 推荐(0) 编辑
摘要: # 为什么学习算法? 数据结构和算法 没有这个数据结构和算法,你也能写出代码, 但是会有问题, 1,你写出的代码可能是执行效率是比较低的,可是对程序运行的效率和开销没有意识,性能低下 2,面对新的问题,你可能无从下手,不知道怎么入手解决这个问题, 3,还有你用到第三方的工具,你可能看不懂,更不用说去 阅读全文
posted @ 2020-02-23 01:07 技术改变命运Andy 阅读(326) 评论(0) 推荐(0) 编辑