剑指offer
qq_43275748
这个作者很懒,什么都没留下…
展开
-
12:矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的...原创 2019-11-01 09:42:40 · 89 阅读 · 0 评论 -
11:旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。我的代码:二分法class min: def solution(self,nums): a = nums[0] b = nums[-1] ...原创 2019-10-31 20:09:04 · 75 阅读 · 0 评论 -
基础题:对公司员工排序(比较经典和基础)(sorted中匿名函数的个人理解)
面试官:请实现一个排序算法,要求时间复杂度为O(N)面试官:我们想对公司所有员工按年龄排序,我们公司共有几万名员工;面试官:只允许使用常量大小的辅助空间,不得超过O(N);法一:创建类实现学生的名字,年龄,性别属性,并可以按照某种属性来排序。也可以用字典,但是好像不直观,暂时不写。采用冒泡排序,这是基础中的基础。import randomimport stringclass Stude...原创 2019-10-31 09:28:06 · 435 阅读 · 0 评论 -
10:类-斐波那切数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39n=0时,f(n)=0 n=1时,f(n)=1 n>1时,f(n)=f(n-1)+f(n-2)法一:用循环较快class Solution: def fib(self, x): if x<=0: return 0 elif ...原创 2019-10-28 11:22:35 · 110 阅读 · 0 评论 -
9:用两个栈实现队列(拓展:用两个队列实现一个栈)
用两个栈来实现一个队列,声明如下:实现队列的Push和Pop操作,即在队尾插入节点和队头插入节点。 队列中的元素为int类型。class Queue: def __init__(self,list): self.stack1 = [] self.stack2 = [] # self.stack1 = [x for x in list] ...原创 2019-10-28 08:44:29 · 82 阅读 · 0 评论 -
8:二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路:三种情况:一个节点(Node)有右子树,那么中序遍历下一个节点就是这个右子树的左子节点一个节点(···)没有右子树且它是父节点的右子树,这种情况比较复杂,需要指向父节点的指针一直向上遍历,直到这个父节点是它父节点的左子树,那么中序遍历下一个节...原创 2019-10-23 17:10:22 · 110 阅读 · 0 评论 -
3:数组中重复的数字
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。class solution:def duplicate(self,list,duplication):for x in ran...原创 2019-10-21 09:50:12 · 95 阅读 · 0 评论 -
7:重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。class TreeNode: def __init__(self,x): self.val = x self.right...原创 2019-10-21 09:09:41 · 100 阅读 · 0 评论 -
6.从尾到头打印链表
输入一个链表,从尾到头打印链表每个节点的值# class ListNode:# def __init__(self,val):# self.val = val# self.next = Noneclass solution: def print_from_tail_to_head(self,ListNode): # 1.如何...原创 2019-10-19 18:12:37 · 58 阅读 · 0 评论 -
5.替换空格
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。时间复杂度为O(n):class solution(object): def replace_space(self, string): num_space = 0 for x in string:...原创 2019-10-19 18:07:13 · 99 阅读 · 0 评论 -
4.二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class solution: def find(self,target,array): if not array: return None m,n = len(arr...原创 2019-10-19 18:01:45 · 97 阅读 · 0 评论