![](https://img-blog.csdnimg.cn/20200424231553774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法
文章平均质量分 91
利用数据结构当做工具,学会算法思想解决实际问题
宇宙之一粟
InfoQ第二季签约作者
混迹于江湖,江湖却没有我的影子
热爱技术,专注于后端全栈,轻易不换岗
拒绝内卷,工作于软件工程师,弹性不加班
热衷分享,执着于阅读写作,佛系不水文
展开
-
链表常考题及解题套路
链表 链表题一般常考 定义 单链表:一个节点 + 指向下一个节点的指针 头指针:第一个节点,head 尾指针:最后一个节点,tail 双向链表:单链表增加指向前继结点的指针 特点 增加、删除特别方便,复杂度:O(1) 查找、获得第k个元素,复杂度: O(n) 实现 参考之前的文章: 用最容易的方式学会单链表(Python实现) class ListNode: """链表结点定义 """ def __init__(self, data=0, next_node=None):原创 2020-10-24 18:39:10 · 452 阅读 · 0 评论 -
常考算法思想套路
常考算法 暴力法 回溯法 分支限界法 分治法 动态规划 贪心法 暴力法 也称枚举法、穷举法、蛮力法。 基本思想: 根据提出的问题枚举所有可能状态,并用问题给定的条件检验哪些是需要的,哪些是不需要的,能使命题成立即为其解。 框架1: 基本的遍历 + 判断 for(循环变量x取所有可能的值): if (x满足指定的条件): # 执行想用的操作 print(x) ... return ... 太多数题目如果第一时间不能想出最优解,就可以使用最简单的暴原创 2020-10-24 18:31:44 · 261 阅读 · 0 评论 -
[剑指Offer]面试题25: 合并两个排序的链表
合并两个有序链表 “Think ahead. Don’t let day-to-day operations drive out planning.” — Donald Rumsfeld 题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足递增有序的规则。 示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4 限制: 0 <= 链表长度 <= 1000 解题思路一原创 2020-09-13 16:15:32 · 174 阅读 · 0 评论 -
排序算法太多?常用排序都在这了,一篇文章总结和实现所有面试会考的排序算法(基于Python实现)
排序算法 一般排序算法最常考的:快速排序和归并排序。这两个算法体现了分治算法的核心观点,而且还有很多出题的可能。 更多细节请参考刘宇波老师的:不能白板编程红黑树就是基础差?别扯了。 1. 常见的排序算法 排序算法很多,除了能写出常见排序算法的代码,还需要了解各种排序的时空复杂度、稳定性、使用场景、区别等。 1.1 选择排序 1.1.1 思想 对于给定的一组序列,第一轮比较选择最小(或最大)的值,然后将该值与索引第一个进行交换;接着对不包括第一个确定的值进行第二次比较,选择第二个记录与索引第二个位置进行交原创 2020-09-10 18:15:46 · 482 阅读 · 0 评论 -
详解排序算法(Python实现)
sorting-algorithms-python Python的内置排序算法 与许多其他高级编程语言一样,Python语言提供了使用sorted()函数对数据进行开箱即用的功能。示例: >>> li = [9, 5, 3, 6, 7] >>> sorted(li) [3, 5, 6, 7, 9] 冒泡排序 冒泡排序是最直接的排序算法之一。它的名称来自算法...原创 2020-05-27 08:51:25 · 396 阅读 · 0 评论