![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
LMNNNN
这个作者很懒,什么都没留下…
展开
-
树:二叉树转双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。来源:《剑指offer》1.递归方法# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = Non...原创 2019-03-19 19:33:06 · 411 阅读 · 0 评论 -
机器人的运动范围 C++
题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?回溯法class Solution {pu...原创 2019-03-27 14:08:27 · 309 阅读 · 0 评论 -
二叉搜索树的第k个节点
题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。来源:《剑指offer》思路:二叉树中序遍历1.递归# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# ...原创 2019-03-19 22:09:06 · 105 阅读 · 0 评论 -
变态跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。来源:《剑指offer》思路:对于n级台阶第一步有n种跳法:跳1级、跳2级、到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+…+f(1)因为f(n-1)=f(n-2)+f(...原创 2019-03-19 21:48:35 · 118 阅读 · 0 评论 -
跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。来源:《剑指offer》和斐波那契数列类似# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): f1 = 1 f2 = 2 if ...原创 2019-03-19 21:15:25 · 93 阅读 · 0 评论 -
斐波那契数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39来源:《剑指offer》1.非递归# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): f1 = 0 f2 = 1 if n == 0:...原创 2019-03-19 20:55:42 · 106 阅读 · 0 评论 -
旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。来源:《剑指offer》思路:最大最小元素是隔壁,而且前半段和后半段都是递增函数。用二分查找,如果mid大于等...原创 2019-03-19 20:44:53 · 95 阅读 · 0 评论 -
用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。来源:《剑指offer》思路:栈1用来push元素,栈2用来pop元素。当队列pop时,如果栈2为空,栈1所有元素出栈到2,然后栈2元素出栈;如果当栈2不空,栈2元素直接出栈# -*- coding:utf-8 -*-class Solution: def __init__(self): ...原创 2019-03-19 20:25:51 · 100 阅读 · 0 评论 -
树:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。来源:《剑指offer》分治法# -*- coding:utf-8 -*-# class TreeNode:# def __init__(...原创 2019-03-19 20:16:28 · 132 阅读 · 0 评论 -
二维数组中的查找
题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。来源:《剑指offer》从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。于是,target比这个元素小就往上找,比这个元素大就往右找。如果出了边界,则说明二维数组中不存在t...原创 2019-03-19 19:55:14 · 150 阅读 · 0 评论 -
矩阵中的路径 C++
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串...原创 2019-03-27 15:43:58 · 362 阅读 · 0 评论