当前位置:首页>python>python-ds,一个专注的 Python 库

python-ds,一个专注的 Python 库

  • 2026-09-19 20:17:01
python-ds,一个专注的 Python 库

大家好,我是木木。

今天给大家分享一个专注的 Python 库,python-ds。

python-ds

它收录了常见数据结构与算法面试题的纯 Python 实现,涵盖数组、链表、栈、二叉树、图、动态规划、贪心、字符串等分类,每道题风格统一、代码简洁。

项目地址:https://github.com/prabhupant/python-ds

官方文档:https://github.com/prabhupant/python-ds/blob/master/README.md

三个特点

面向面试

题目直接对标 LeetCode / Cracking the Coding Interview 等常见面试来源,不做花哨包装,就是给你干净可用的解法。

风格统一

所有题目遵循同一套代码范式:函数定义 + 测试用例,读一道就能快速上手其余题目,不用反复适应不同作者的风格。

分类清晰

按数据结构(数组、链表、栈、树、图、字符串)和算法(动态规划、排序、贪心、位运算、数学)分目录组织,找题很快。

最佳实践

直接克隆仓库,按目录浏览即可。

gitclonehttps://github.com/prabhupant/python-ds.git

链表反转

这段代码解决什么问题:用迭代法反转单链表,输出反转前后各节点的值,验证反转正确性。

classNode():def__init__(self,val):self.val=valself.next=Nonedefreverse(head):prev=Nonecurr=headwhilecurr:nxt=curr.nextcurr.next=prevprev=currcurr=nxtreturnprevhead=Node(1)head.next=Node(2)head.next.next=Node(3)curr=headwhilecurr:print(curr.val)curr=curr.nextnew_head=reverse(head)curr=new_headwhilecurr:print(curr.val)curr=curr.next

反转前输出 1→2→3,反转后输出 3→2→1。三指针法(prev、curr、next)是链表反转的标准做法,时间 O(n),空间 O(1)。面试高频题。

并查集 Union-Find

这段代码解决什么问题:演示并查集的初始化、合并和连通查询,判断节点之间是否连通。

fromdata_structures.union_find.ufimportUnion_finduf=Union_find(6)uf.union(1,2)print('2 and 3 connected?',uf.find(2,3))uf.union(1,3)uf.union(4,5)print('2 and 4 connected?',uf.find(2,4))uf.union(3,5)print('2 and 4 connected?',uf.find(2,4))

初始 1-2-3 和 4-5 是两个独立集合。合并 3-5 后,集合连通,2 和 4 变为 connected。Union-Find 是处理连通性问题的经典数据结构,带路径压缩和按秩合并后接近 O(α(n))。

高级功能

有效括号验证

这段代码解决什么问题:用栈判断一个字符串中的括号是否匹配闭合,覆盖圆括号、方括号和花括号三种类型。

defcheck(s):stack=[]forelementins:ifelement=='(':stack.append(')')elifelement=='[':stack.append(']')elifelement=='{':stack.append('}')elifnotstackorstack.pop()!=element:returnFalsereturnnotstacktests=['()[]{}','(]','([{}])','{[()]}','((()))']fortintests:print(f'{t:12} -> {check(t)}')

用栈做括号匹配是经典题:遇到左括号压入对应右括号,遇到右括号弹出比对。(] 返回 False 因为栈顶 ) 和 ] 不匹配。复杂度 O(n)。

适用 / 不适用场景

适用:

  • 面试准备,需要快速刷题看标准解法。
  • 学习数据结构和算法的基础实现。
  • 教学场景,代码风格统一便于讲解。

不适用:

  • 生产环境直接使用(缺少错误处理和边界测试)。
  • 高级算法竞赛训练(题目偏向入门到中等难度)。
  • 需要算法可视化或交互式学习的场景。

上线前检查清单

  • 代码仅供学习参考,生产使用前需补充边界测试和异常处理。
  • 建议先理解思路再手写,不要直接背诵代码。
  • 关注仓库更新,题目持续增加中。

总结

python-ds 是一个专注面试的数据结构与算法题库,代码干净、分类清晰,适合系统刷题和教学参考。如果你正在准备技术面试,它值得收藏。

最新文章

随机文章