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



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

  1. 所有题目按照书中章节排列,便于查询;
  2. 每个题目单独一个文件,文件可以直接运行,便于测试以及查看结果;
  3. 作为2的补充,对于二叉树和单链表这种类型的题目,文件中都会有二叉树或者单链表的实现,例如面试题50中,增加了使用列表创建二叉树,以及获取二叉树中某个结点的辅助代码;
  4. 由于Python和C++语言特性存在不同,部分题目会利用Python的特点,实现思路和书中不一致,例如实现单例模式
  5. 对于每个题目,简要说出了主要思路以及在Python中可能需要注意的地方面试题12
  6. 在做题过程中,部分对于书中不理解或者书中实现对于Python来说有问题的地方,用博客进行了更详细的补充说明,例如面试题32
  7. 不足1:部分题目可能存在考虑不周或者测试用例不全,导致部分用例不通过;
  8. 不足1:部分题目的实现方式并没有充分利用Python的特点,不是那么Pythonic,应该有更好的解决办法。
  9. 所有的代码请在这里获取,欢迎大家Star;
  10. 下面是目录

第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位数

面试题13 O(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 抽象建模能力

面试题43 n个骰子的点数

面试题44 扑克牌的顺子

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

6.5 发散思维能力

面试题46 求1+2...+n

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

面试题48 不能被继承的类

第7章 面试案例

7.1 案例一

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

7.2 案例二

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

《剑指offer》面试题的Python实现的更多相关文章

  1. 剑指Offer:面试题15——链表中倒数第k个结点(java实现)

    问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...

  2. 剑指offer面试题3 二维数组中的查找(c)

    剑指offer面试题三:

  3. 剑指Offer——笔试题+知识点总结

    剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观, ...

  4. C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告

    剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...

  5. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  6. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  7. Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)

    剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...

  8. C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解

    剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...

  9. C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解

    剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...

  10. C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解

    剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...

随机推荐

  1. Print Article hdu 3507 一道斜率优化DP 表示是基础题,但对我来说很难

    Print Article Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)To ...

  2. dets

    模块说明 提供基于文件的项式存储,项式以元组表示,其中某个位置为键,默认第1位置 Dets为Mniesia所用,后者增加了事务.查询.和分布式支持. Dets文件不能超过2GB. Dets只有set ...

  3. 一个高性能、轻量级的分布式内存队列系统--beanstalk

    Beanstalk是一个高性能.轻量级的.分布式的.内存型的消息队列系统.最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟.其实Beanstalkd是典型的类Mem ...

  4. Python单元测试框架

    目录 概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的 ...

  5. C#微信公众号/订阅号开发 接口源码

    using System; using System.Web; using System.IO; using System.Text; using System.Web.Security; using ...

  6. SerialPort如何读取串口数据并显示在TextBox上,多线程委托

    namespace SerialPort { public partial class Form3 : Form { delegate void UpdateTextEventHandler(stri ...

  7. [C#]Winform后台提交数据且获取远程接口返回的XML数据,转换成DataSet

    #region 接口返回的Xml转换成DataSet /// <summary> /// 返回的Xml转换成DataSet /// </summary> /// <par ...

  8. java通过shield链接Elasticsearch

    本文mark了springboot中集成elasticsearch,并且实现连接带有shield权限管理的elasticsearch的方法. tips:首先建议java client版本和elasti ...

  9. (10.11)Java第一小步

    在度过大一和大二浑浑噩噩的咸鱼生活之后,我决定 开始为自己的未来负责,开始学习自己喜欢的Java,同时决定以这篇博客来开启自己的博客之旅和Jaca的学习之路. 以后我也会陆续在博客园更新自己的博客,记 ...

  10. JavaScript大厦之地基:js数据类型

    一.数据和类型        俗话说物以类聚,人以群分:这里将人和物都按类别进行了区分.我们数据也一样,使用计算机我们能处理数值,也可以处理文本还可以处理图形.音频.视频等各种各样的数据,不同的数据有 ...