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


作者:gg

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

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

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

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

    O(n^2)排序 冒泡排序.插入排序与选择排序(Python)_NLP_victor的博客-CSDN博客 归并 归并排序(Python)_NLP_victor的博客-CSDN博客 快排 快速排序(Py ...

  2. 【剑指Offer面试题】 九度OJ1510:替换空格

    c/c++ 中的字符串以"\0"作为结尾符.这样每一个字符串都有一个额外字符的开销. 以下代码将造成内存越界. char str[10]; strcpy(str, "01 ...

  3. 剑指offer 面试题三 找出数组中重复的数字

    1 import org.junit.Test; 2 3 import java.util.Arrays; 4 import java.util.HashSet; 5 6 public class D ...

  4. [剑指offer]面试题第[68-2]题[Leetcode][第236题][JAVA][二叉搜索树的最近公共祖先][递归]

    [问题描述][中等] 235/68-1 搜索二叉树 236/68-2 二叉树 [解答思路] 递归 时间复杂度:O(N) 空间复杂度:O(N) 情况 1. , 2. , 3. , 4. 的展开写法如下. ...

  5. [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]

    [剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...

  6. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  7. 剑指offer面试题[64]-数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 分 ...

  8. 剑指offer面试题[30]-最小的k个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 分析思路:         这道题最简单的思路莫过于把输入的n个数排 ...

  9. (待补充)【n个骰子的点数】剑指offer——面试题43:n个骰子的点数

    剑指offer--面试题43:n个骰子的点数 [注意]此题再牛客网上没有OnlineJudge,在此补充解法. 题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s.输入n,打印出s的所有可能的值 ...

  10. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

最新文章

  1. 与jQuery的感情碰撞——由浅入深学jQuery
  2. python c参数,CPython – 读取C函数内的Python字典(键/值)作为参数传递
  3. SilverLight学习笔记--如何解决Button不响应MouseLeftButtonDown与MouseLeftButtonUp事件的问题...
  4. 【移动通信】WIFI6 技术参数
  5. 什么是Internet
  6. Linux 系统中的权限管理
  7. 【转载】jvm内存回收
  8. 如何格式化电脑_计算机格式化的方法教程
  9. 北大助理教授献给「后浪」的建议:奔涌吧,深度学习!
  10. GAGE EON采集卡
  11. 视频时代的下一幕 ABC Inspire:读懂视频
  12. c fflush函数
  13. 微信前台WEUI前台实例+EXCEL导出,SSM框架完整流程
  14. 【物理应用】Matlab实现两端固支梁热力耦合的有限元分析
  15. java 头像 微信群_Android仿微信群聊头像
  16. 实时视频应用之QoS关键技术分析
  17. 表格table标签的属性及使用方式
  18. shiro安全框架扩展教程--如何扩展realm桥接器并退出自动清空角色资源缓存
  19. 公司金融02.净现值与内部收益率
  20. 逻辑回归--理论与python实例

热门文章

  1. python工程控件_工程脚本插件方案 - c集成Python基础篇
  2. 路由到另外一个页面_如何在多个页面中,引入一个公共组件
  3. (71)FPGA模块调用(system Verilog调用VHDL)
  4. matlab中将ebn0转snr,EbNo(EbN0)和SNR
  5. 如何JQ将下拉列表的值传送给php,JQuery设置获取下拉菜单某个选项的值(比较全)...
  6. java机考_【Java】(机考常用)类集
  7. 内核中的notification chain浅析
  8. shiro利用mysql动态授权_SpringBoot+Shiro学习之数据库动态权限管理和Redis缓存
  9. docker下的mysql my.ini_docker部署mysql启动失败
  10. threallocal详解