《剑指offer》面试题的Python实现

阿里云2000元红包!本站用户参与享受九折优惠!

所属网站分类: 面试经典 >python

作者:gg

链接:http://www.pythonheidong.com/blog/article/464/

来源:python黑洞网www.pythonheidong.com

《剑指Offer》是很多程序员面试前要看的书,但里面的算法都是基于C++实现的,最近用了三周左右时间,用Python完成了里面几乎所有的算法题,由于时间以及个人水平均有限,或许会有部分问题没有发现,希望大家发现后能指出,在此感谢大家!也希望我写的东西能对大家有一点帮助。所有源代码请在这里获取。

Python-Offer的主要特点简介如下:

所有题目按照书中章节排列,便于查询;

每个题目单独一个文件,文件可以直接运行,便于测试以及查看结果;

作为2的补充,对于二叉树和单链表这种类型的题目,文件中都会有二叉树或者单链表的实现,例如面试题50中,增加了使用列表创建二叉树,以及获取二叉树中某个结点的辅助代码;

由于Python和C++语言特性存在不同,部分题目会利用Python的特点,实现思路和书中不一致,例如实现单例模式

对于每个题目,简要说出了主要思路以及在Python中可能需要注意的地方面试题12

在做题过程中,部分对于书中不理解或者书中实现对于Python来说有问题的地方,用博客进行了更详细的补充说明,例如面试题32

不足1:部分题目可能存在考虑不周或者测试用例不全,导致部分用例不通过;

不足2:部分题目的实现方式并没有充分利用Python的特点,不是那么Pythonic,应该有更好的解决办法。

所有的代码请在这里获取;

下面是目录

第2章面试基础知识

2.2编程语言

面试题2使用Python实现单例模式

2.3数据结构

面试题3二维数组中的查找

面试题4替换空格

面试题5从尾到头打印单链表

面试题6重建二叉树

面试题7用两个栈实现队列

2.4算法和数据操作

面试题8旋转数组的最小数字

面试题9斐波那契数列

面试题10二进制中1的个数

第3章高质量代码

3.3代码的完整性

面试题11数值的整数次方

面试题12打印1到最大的n位数

面试题13O(1)时间删除链表结点

面试题14调整数组顺序使寄数位于偶数前面

3.4代码的鲁棒性

面试题15链表中倒数第k个结点

面试题16反转链表

面试题17合并两个排序的链表

面试题18树的子结构

第4章解决面试题思路

4.2画图让抽象问题形象化

面试题19二叉树的镜像

面试题20顺时针打印矩阵

4.3举例让抽象问题具体化

面试题21包含min函数的栈

面试题22栈的压入弹出序列

面试题23从上往下打印二叉树

面试题24二叉树的后序遍历序列

面试题25二叉树中和为某一值的路径

4.4分解让复杂问题简单化

面试题26复杂链表的复制

面试题27二叉搜索树与双向链表

面试题28字符串的排列

第5章优化时间和空间效率

5.2时间效率

面试题29数组中出现次数超过一半的数字

面试题30最小的k个数

面试题31连续子数组的最大和

面试题32从1到n整数中1出现的次数

面试题33把数组排成最小的数

5.3时间效率与空间效率的平衡

面试题34丑数

面试题35第一个只出现一次的字符

面试题36数组中的逆序对

面试题37两个链表的第一个公共结点

第6章面试能力

6.3知识迁移能力

面试题38数字在排序数组中出现的次数

面试题39二叉树的深度

面试题40数组中只出现一次的数字

面试题41和为s的两个数字VS和为s的连续正数序列

面试题42翻转单词顺序与左旋转字符串

6.4抽象建模能力

面试题43n个骰子的点数

面试题44扑克牌的顺子

面试题45圆圈中最后剩下的数字

6.5发散思维能力

面试题46求1+2…+n

面试题47不用加减乘除做加法

面试题48不能被继承的类

第7章面试案例

7.1案例一

面试题49把字符串转化成整数

7.2案例二

面试题50树中两个结点的最低公共祖先

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!