剑指offer
文章平均质量分 75
byrsunshine6
筑梦
展开
-
剑指offer整理(附python代码)——递归
1.斐波那契数列问题描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39考察点:递归,找函数通式从第3项开始,数值为前两项的和。思路通式:f(n)=f(n-1)+f(n-2) (n>3), f(n)=0 (n=0),f(n)=1 (n=2)。非递归化:依次算出前n项。注意,从第0项开始。f(n)共需计算n...原创 2018-07-14 11:44:22 · 394 阅读 · 0 评论 -
剑指offer整理(附python代码)——动态规划
1.连续子数组的最大和问题描述常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)考察点:子数组,时间效率思路1: 动态规划【核...原创 2018-07-14 11:43:58 · 271 阅读 · 0 评论 -
剑指offer整理(附python代码)——排序&查找
1.旋转数组的最小数字问题描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0考察点:二分查找思路1 :O(logn)旋转后,两段有序,最小...原创 2018-07-14 11:43:08 · 213 阅读 · 0 评论 -
剑指offer整理(附python代码)——树
基础:二叉树的遍历前序:根左右中序:左根右后序:左右根层序:从上到下,从左到右class TreeNode(): def __init__(self,data=-1): self.data = data self.left = None self.right = Noneclass Tree(): def pr...原创 2018-07-14 11:42:26 · 244 阅读 · 0 评论 -
剑指offer整理(附python代码)——堆栈、队列
1.用两个栈实现队列问题描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。考察点:栈、队列的性质思路用两个先进后出,实现先进先出。(入队,出队)“出队”:当S2不空,则对S2做弹出;若S2为空,则把S1中所有元素,逐个压入S2,最后对S2做弹出。“入队:当S2空,直接对S1添加;当S2不空,也没关系,因为总会先将S2中弹空...原创 2018-07-14 11:41:52 · 195 阅读 · 0 评论 -
剑指offer整理(附python代码)——字符串
1.替换空格问题描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。考察点:字符串匹配思路1 创建新的字符串存最终结果(以下采用2)1st顺序遍历字符串,确定除空格外字符串长度2nd顺序遍历字符串,顺序存储,碰到字符串就直接存储,空格就存‘20%’...原创 2018-07-14 11:41:25 · 302 阅读 · 0 评论 -
剑指offer整理(附python代码)——数组
Content1.二维数组中的查找问题描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。考察点:数组查找思路1从右上角开始扫描,情况及方案如下: - 该数大于要找的数:删除该数所在的列 - 该数小于要找的数:删除该数所在的行 - 该数...原创 2018-07-14 11:35:10 · 747 阅读 · 0 评论 -
剑指offer整理(附python代码)——链表
1.从尾到头打印链表问题描述输入一个链表,从尾到头打印链表每个节点的值。考察点:链表反转思路确认是否可以改变链表结构?即链表中所有指针反向。链表逆序输出,即后进先出,想到栈结构,实则就是递归。先递归输出它后面的节点,再输出该节点自身。# class ListNode:# def __init__(self, x):# self.val = x# ...原创 2018-11-05 10:11:52 · 171 阅读 · 0 评论