![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
亦万
世间行乐亦如此,古来万事东流水。
展开
-
剑指offer-面试题9:用两个栈实现队列
ps:这里的栈都是自己用python构建的类,然后通过栈的类构建队列的类,解题思路跟书中一样,一个栈执行入队列,另一个栈负责出列#-*- coding:utf-8 -*-'''descibe: 用两个栈实现一个队列队列的声明是:分别完成在队列尾部插入节点和在队列头部删除节点'''class stack: def __init__(self): self...原创 2019-02-27 15:52:18 · 193 阅读 · 0 评论 -
剑指offer-面试题17-打印从1到最大的n位数-python
#-*- coding:utf-8 -*-'''descrption: 打印从1到最大的n位数题目:输入数字n,按顺序打印出1到最大的n位十进制数这里需要考虑n很大时用int甚至long long都无法表示,因为python的字符串是不可变对象,这里我们采用数组的方式并用在最左边加一个空间来判断是否最大值'''class Solution: def print_until_...原创 2019-03-06 16:58:05 · 447 阅读 · 0 评论 -
剑指offer-面试题16:数值的整数次方-python
#-*- coding:utf-8 -*-'''一个优秀的代码需要考虑代码的可读性、完整性以及错误处理的方法还有其复杂度description: 面试题16:数值的整数次方 实现函数power(base, exponent) 其中base是double型变量、exponent是整型变量''''''代码主要分成三步走,可读性、完整性以及复杂度'''class Solu...原创 2019-03-06 16:20:00 · 305 阅读 · 0 评论 -
剑指offer-面试题15-二进制中1的个数-位运算-python
#-*- coding:utf-8 -*-'''description: 位与面试题15: 二进制中1的个数'''class Solution: ''' 这种方法如果有负数会陷入死循坏 ''' def num_of_1(self, n): count = 0 while n: if n &am...原创 2019-03-05 20:55:46 · 354 阅读 · 0 评论 -
剑指offer-面试题7-重建二叉树-python
一、题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树二、代码实现 1.思路 (1)首先可知前序遍历的顺序是根(跟节点)-左子树-右子树的顺序,那么列表中的第一个数即为根结点; (2)中序遍历的顺序是左-根-右的顺序,即可根据前序遍历的列表中根结点(第一个元素)的位置在中序遍历的列表中的位置来确定左右子树;可以通过递归的...原创 2019-02-26 16:35:14 · 217 阅读 · 0 评论 -
剑指offer-14.剪绳子动态规划、贪婪算法-python
#-*- coding:utf-8 -*-'''description: name:剪绳子 内容:给你一根长度为n的绳子,请把绳子剪成m段(n>1,m>1),每段绳子的长度即为k[0],k[1]....k[m],请问k[0]*k[1]*..*k[m]可能的最大乘积是多少'''class Solution: def dynamic_programming(sel...原创 2019-03-05 16:59:11 · 789 阅读 · 0 评论 -
剑指offer-面试题6:从头到尾打印列表 python
一、问题描述输入一个链表的头节点,从头到尾反过来打印出每个节点的值二、代码实现(这里采用数据结构与算法 python语言描述书中的)def __init__(self, val, next_=None): self.elem = val self.next = next_#这里创建一个链表并返回该链表的头节点def create_lnode(lst): he...原创 2019-02-25 19:42:20 · 240 阅读 · 0 评论 -
剑指offer-二维数组中的查找-python
一、题目描述 在一个二维数组中,每一行都按照从左往右递增以及每一列都按照从上往下递增的顺序排序。完成一个函数,输入这样的二维数组和一个整数,判断该整数是否在这个数组中 二、解题思路 书中的思路是从右上角不断往左下来剔除一行或者一列,我用的是从左下脚不断往右上提剔除一行或者一列,即当前位置的数如果大于num,则剔除当前行;如果当前位置的数小于num,则剔除当前列,需要考虑在...原创 2019-02-23 11:25:59 · 223 阅读 · 0 评论 -
剑指offer-不修改数组找出重复的数字-python
一、前言 由于文中给出的代码都是c++的版本,这里给出python的版本,题目内容为:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个数字是重复的。二、解题思路1.这里可以通过一种O(n)额外空间的方法利用传统的类如先复制一个列表,先排序再查找的办法,也可以通过set的办法找出重复的元素2.这里我们用一种二分查找的思想:把1~n的数字从中间的数字m...原创 2019-02-23 10:20:04 · 456 阅读 · 0 评论 -
剑指offer-面试11-旋转数组中的最小数字-python
#-*- coding:utf-8 -*-'''description:这题也是用二分查找的思路。如果当前查找的区间中间的数小于等于区间最右边的数,那么我们可以认为最小的数是该数或者在该数的左边 反之则在该数的右边 '''def find_least(lst): if len(lst) ...原创 2019-02-27 16:56:44 · 300 阅读 · 0 评论 -
剑指offer-面试10-斐波那契数列、快速排序、归并排序-python
#-*- coding:utf-8 -*-'''describe:1.fibonacci 用一种循坏而非递归的方式来求fibonacci数2.可以用递归的思路, 青蛙每次可以跳一或两格阶梯,青蛙跳就是fibonacci问题3.加入比较重要的快速排序和归并排序'''def fibonacci(n): if n < 0: return None ...原创 2019-02-27 16:32:30 · 232 阅读 · 0 评论 -
剑指offer-面试题18删除链表中的节点-python
#-*- coding:utf-8 -*-'''description 题目: 删除链表中的节点 1.在O(1)时间内删除链表节点''''''这里我们首先定义一个链表的类'''class linkNode: def __init__(self, value, next = None): self.value = value ...原创 2019-03-07 18:57:31 · 395 阅读 · 0 评论