剑指offer
Lucia_0103
这个作者很懒,什么都没留下…
展开
-
剑指offer——树
面试题7:重建二叉树题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。详细代码:# -*- coding:utf-8 -*-# class TreeNode:# def __init__...原创 2019-03-14 21:56:03 · 214 阅读 · 0 评论 -
剑指offer——举例让抽象问题具体化(栈)
面试题30:包含min的栈题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push、pop的时间复杂度都是O(1)详细代码:# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] self.minstack = [] ...原创 2019-04-18 17:03:17 · 262 阅读 · 0 评论 -
剑指offer——从上到下打印二叉树(面试题32)
题目一:不分行从上到下打印二叉树题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。详细代码:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right =...原创 2019-04-18 17:24:52 · 178 阅读 · 0 评论 -
剑指offer——举例让抽象问题具体化(33,34)
面试题34:二叉搜索树的后序遍历序列题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。详细代码:# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # wr...原创 2019-04-23 22:41:29 · 190 阅读 · 0 评论 -
剑指offer——时间效率(一)
一、面试题39:数组中出现次数超过一半的数字题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。详细代码:# -*- coding:utf-8 -*-class Solution: def MoreThan...原创 2019-05-26 22:17:15 · 208 阅读 · 0 评论 -
剑指offer——时间效率(二)
面试题44:数字序列中某一位的数字题目描述:数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。详细代码:# -*- coding:utf-8 -*-class Solution: def dightAtIndex(self, inde...原创 2019-05-26 23:26:38 · 144 阅读 · 0 评论 -
剑指offer——优化时间与空间效率
面试题49:丑数题目描述:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。详细代码:# -*- coding:utf-8 -*-class Solution: def GetUglyNumber_Solution(self, index): ...原创 2019-05-30 22:34:54 · 272 阅读 · 0 评论 -
剑指offer——知识迁移能力(一)
面试题53:在排序数组中查找数字题目一:数字在排序数组中出现的次数题目描述统计一个数字在排序数组中出现的次数。详细代码# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): # write code here num = 0 if dat...原创 2019-06-08 21:55:50 · 241 阅读 · 0 评论 -
剑指offer——知识迁移能力(二)
面试题56:数组中数字出现的次数题目一:数组中只出现一次的两个数字题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。详细代码# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, arr...原创 2019-06-08 23:14:18 · 162 阅读 · 0 评论 -
剑指offer——抽象建模能力
面试题60:n个骰子的点数题目描述:把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。详细代码:class Solution: def GetProbability(self, n): if n < 1: return [] data0 = [0] + [1] * 6 + [0] * 6 * (n - 1) da...原创 2019-06-10 22:21:40 · 240 阅读 · 0 评论 -
剑指offer——发散思维能力
面试题64:求1+2+…+n题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)详细代码:1、解法一:Python函数# -*- coding:utf-8 -*-class Solution: def Sum_Solution(self, n): # write...原创 2019-06-11 13:30:14 · 234 阅读 · 0 评论 -
剑指offer——分解让复杂问题简单化
面试题35:复杂链表的复制题目描述:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)详细代码:# -*- coding:utf-8 -*-# class RandomListNode:# def __ini...原创 2019-04-26 15:45:33 · 253 阅读 · 0 评论 -
剑指offer——画图让抽象问题形象化
面试题27:二叉树的镜像题目描述:操作给定的二叉树,将其变换为源二叉树的镜像详细代码:# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Nonec...原创 2019-04-16 15:53:42 · 278 阅读 · 0 评论 -
剑指offer——查找与排序
面试题11:旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。方法:二分查找详细代码:# -*- coding:utf-8 -*-cla...原创 2019-03-19 21:42:47 · 201 阅读 · 0 评论 -
剑指offer——数组
面试题3:数组中重复的数字题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。详细代码:class Solution: # 这里要特别注意~找到任意重复的一个值并...原创 2019-03-12 09:58:51 · 188 阅读 · 0 评论 -
剑指offer——字符串和链表
字符串面试题5:替换空格题目描述:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。详细代码:class Solution: # s 源字符串 def replaceSpace(self, s): # write code here s...原创 2019-03-12 17:39:29 · 544 阅读 · 0 评论 -
剑指offer——递归与循环
面试题10:斐波那契数列题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。详细代码:# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here if n <= 0: ...原创 2019-03-18 19:48:41 · 231 阅读 · 0 评论 -
剑指offer——栈和队列(leetcode232, 225)
面试题9:用两个栈实现队列(leetcode 232)由于leetcode上面的232题(用栈实现队列)实现了队列更多的功能,因此以232题为例。题目描述:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。详细代码:class MyQueue(o...原创 2019-03-13 17:35:25 · 217 阅读 · 0 评论 -
剑指offer——回溯法
面试题12:矩阵中的路径题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含...原创 2019-03-22 10:47:31 · 367 阅读 · 0 评论 -
剑指offer——动态规划与贪婪算法
面试题14:剪绳子题目描述:给你一根长度为n的绳子,请把绳子剪成m段(m,n都是整数,且n>1,m>1),每段绳子的长度记为k[0],k[1],k[2],…,k[m]。请问k[0]k[1]…*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积为18。动态规划详细代码:# -*- coding:utf-8 -*-c...原创 2019-03-23 15:15:55 · 295 阅读 · 0 评论 -
剑指offer——位运算
面试题15:二进制中1的个数题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。详细代码:class Solution: def NumberOf1(self, n): # write code here count = 0 if n < 0: n = n & 0xfffff...原创 2019-03-23 15:28:55 · 241 阅读 · 0 评论 -
剑指offer——代码的完整性
1、面试题16:数值的整数次方题目描述:实现函数double Power(double base, int exponent),求base的exponent次方、不得使用库函数,同时不需要考虑大数问题。详细代码:# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # ...原创 2019-04-04 16:32:31 · 280 阅读 · 0 评论 -
剑指offer——代码的鲁棒性
面试题22:链表中倒数第k个节点题目描述:输入一个链表,输出该链表中倒数第k个结点。详细代码:# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def ...原创 2019-04-10 23:14:14 · 181 阅读 · 0 评论 -
剑指offer——两个面试案例
面试题67:把字符串转换成整数题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0详细代码:# -*- coding:utf-8 -*-class Solution: def StrToInt(self, s): # write code here if not s or ...原创 2019-06-12 10:11:28 · 260 阅读 · 0 评论