
数据结构与算法
文章平均质量分 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 · 539 阅读 · 0 评论 -
常考算法思想套路
常考算法暴力法回溯法分支限界法分治法动态规划贪心法暴力法也称枚举法、穷举法、蛮力法。基本思想: 根据提出的问题枚举所有可能状态,并用问题给定的条件检验哪些是需要的,哪些是不需要的,能使命题成立即为其解。框架1: 基本的遍历 + 判断for(循环变量x取所有可能的值): if (x满足指定的条件): # 执行想用的操作 print(x) ... return ...太多数题目如果第一时间不能想出最优解,就可以使用最简单的暴原创 2020-10-24 18:31:44 · 361 阅读 · 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 · 216 阅读 · 0 评论 -
排序算法太多?常用排序都在这了,一篇文章总结和实现所有面试会考的排序算法(基于Python实现)
排序算法一般排序算法最常考的:快速排序和归并排序。这两个算法体现了分治算法的核心观点,而且还有很多出题的可能。更多细节请参考刘宇波老师的:不能白板编程红黑树就是基础差?别扯了。1. 常见的排序算法排序算法很多,除了能写出常见排序算法的代码,还需要了解各种排序的时空复杂度、稳定性、使用场景、区别等。1.1 选择排序1.1.1 思想对于给定的一组序列,第一轮比较选择最小(或最大)的值,然后将该值与索引第一个进行交换;接着对不包括第一个确定的值进行第二次比较,选择第二个记录与索引第二个位置进行交原创 2020-09-10 18:15:46 · 623 阅读 · 0 评论 -
详解排序算法(Python实现)
sorting-algorithms-pythonPython的内置排序算法与许多其他高级编程语言一样,Python语言提供了使用sorted()函数对数据进行开箱即用的功能。示例:>>> li = [9, 5, 3, 6, 7]>>> sorted(li)[3, 5, 6, 7, 9]冒泡排序冒泡排序是最直接的排序算法之一。它的名称来自算法...原创 2020-05-27 08:51:25 · 442 阅读 · 0 评论