Python Web后端面试常考数据结构与算法(珍藏版)


本文将对Python web后端面试时常考数据结构与算法进行总结,适合即将找工作或面试的你。Python web后端常考数据结构包括:

  • 常见的数据结构链表、队列、栈、二叉树、堆

  • 使用内置的结构实现高级数据结构,比如内置的list/deque实现栈

  • LeetCode或者剑指Offer上的常考题,本文将给出示例。

Python Web后端面试常考数据结构与算法(珍藏版)_第1张图片


链表

链表有单链表、双链表、循环双端链表

  • 如何使用Python来表示链表结构

  • 实现链表常见操作,比如插入节点,反转链表,合并多个链表等

  • LeetCode练习常见链表题目,如翻转链表,如下所示:

Python Web后端面试常考数据结构与算法(珍藏版)_第2张图片

合并两个有序链表

Python Web后端面试常考数据结构与算法(珍藏版)_第3张图片


队列

队列(queue)是先进先出结构

  • 如何使用Python实现队列?

  • 实现队列的append和pop操作,如何做到先进先出

  • 使用collections.deque实现队列

Python Web后端面试常考数据结构与算法(珍藏版)_第4张图片

栈(stack)是先进后出结构

  • 如何使用Python实现栈?

  • 实现栈的push和pop操作,如何做到先进后出

  • 使用collections.deque实现队列

Python Web后端面试常考数据结构与算法(珍藏版)_第5张图片

字典与集合

Python dict/set底层都是哈希表

  • 哈希表的实现原理,底层其实就是一个数组

  • 根据哈希函数快速定位一个元素,平均查找O(1)

  • 不断加入元素会引起哈希表重新开辟空间,拷贝之前的元素到新数组

哈希表如何解决冲突

  • 链接法:元素key冲突之后使用一个链表填充相同key的元素

  • 开放寻址法:冲突之后根据一种方式(二次探查)寻找下一个可用的槽

  • cpython使用的二次探查


二叉树

先序、中序、后序

  • 先序 根左右

  • 中序 左根右

  • 后序 左右根

Python Web后端面试常考数据结构与算法(珍藏版)_第6张图片

堆其实是完全二叉树,有最大堆和最小堆

  • 最大堆:对于每个非叶子节点V,V的值都比它的两个孩子大

  • 最小堆:对于每个非叶子节点V,V的值都比它的两个孩子小

  • 最大堆支持每次pop操作获取最大的元素,最小堆获取最小元素

  • 常见问题:用堆完成topK问题,从海量数字中寻找最大的K个

Python Web后端面试常考数据结构与算法(珍藏版)_第7张图片

Python常考算法

排序+查找,重中之重

  • 常考排序算法:冒泡排序、快速排序、归并排序、堆排序

  • 线性查找,二分查找

  • 能独立实现代码(手写),能够分析时间空间复杂度

常见排序算法的时空复杂度

Python Web后端面试常考数据结构与算法(珍藏版)_第8张图片

排序算法的稳定性

  • 相同大小的元素在排序之后依然保持相对位置不变,就是稳定的

  • r[i]=r[j]且r[i]在r[j]之前,排序之后r[i]依然在r[j]之前

  • 稳定性对于排序一个复杂结构,并且需要保持原有排序才有意义


快速排序

快速排序经常问分治法(divide and conquer),快排三步走:

  • Partition:选择基准分割数组为两个子数组,小于基准和大于基准的

  • 对两个子数组分别快排

  • 合并结果

Python Web后端面试常考数据结构与算法(珍藏版)_第9张图片

合并两个有序数组

  • 要求m+n复杂度内

Python Web后端面试常考数据结构与算法(珍藏版)_第10张图片


归并排序

Python Web后端面试常考数据结构与算法(珍藏版)_第11张图片


堆排序

Python Web后端面试常考数据结构与算法(珍藏版)_第12张图片

二分查找

Python Web后端面试常考数据结构与算法(珍藏版)_第13张图片

作者:dreamkong
链接:https://www.jianshu.com/p/3df18cf1024a
来源:简书

NO.1

往期推荐

Historical articles

【Plotly快速入门】用Plotly绘制了几张精湛的图表,美翻了!!

50行Python代码绘制数据大屏,这个可视化框架真的太神了

详解Python当中的pip常用命令

【数据分析与娱乐八卦】从Python可视化图表中探究王心凌出圈的流量密码

分享、收藏、点赞、在看安排一下?

368450d81173074552190d11565a882b.gif

1e129bfdb60f5f2aa836439c1f20bb2f.gif

9a8b66b5fca78c5af2a0ff37b0d48163.gif

cf54263f2f84489b90dcf7f11e4dec00.gif

你可能感兴趣的:(链表,队列,算法,可视化,数据结构)