剑指offer
poppy_MCT
开开心心搞技术
展开
-
剑指offer面试题【56】----数组中数字出现的次数
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。代码实现# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here ...原创 2019-05-29 10:03:44 · 180 阅读 · 0 评论 -
剑指offer面试题【32.3】----之字形打印二叉树【反转列表】【Python】
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left ...原创 2019-05-11 11:45:03 · 130 阅读 · 0 评论 -
剑指offer面试题【32.2】----分行从上到下打印二叉树【二叉树】【队列】【Python】
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass...原创 2019-05-10 16:26:14 · 211 阅读 · 0 评论 -
剑指offer面试题【40】----最小的k个数【排序】【Python】
题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。代码实现# -*- coding:utf-8 -*-class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here ...原创 2019-05-15 10:45:29 · 219 阅读 · 0 评论 -
剑指offer面试题【27】----二叉树的镜像【二叉树】【递归】【画图让抽象问题形象化】【Python】
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2019-05-07 10:42:00 · 112 阅读 · 0 评论 -
剑指offer面试题【39】----数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。代码实现# -*- coding:utf-8 -*-class Solution: def MoreThanHalfNum_Solution(self, nu...原创 2019-05-14 13:36:58 · 109 阅读 · 0 评论 -
剑指offer面试题【38】----字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。# -*- coding:utf-8 -*-import itertoolsclass Solution: ...原创 2019-05-14 12:43:32 · 130 阅读 · 0 评论 -
剑指offer面试题【32】----从上到下打印二叉树【队列】【举例让抽象问题具体化】【Python】
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路从上到下打印二叉树的规律:每次打印一个节点后,如果该节点有子结点,则把该节点的子节点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的节点,重复前面的打印操作,知直到队列的所有节点都被打印出来。代码实现class TreeNode: def __init__(self, x): ...原创 2019-05-09 12:51:56 · 119 阅读 · 0 评论 -
剑指offer面试题【31】----栈的压入、弹出序列【Python】【栈】【举例让问题具体化】
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)代码实现# -*- coding:utf-8 -*-class Solut...原创 2019-05-09 11:14:26 · 112 阅读 · 0 评论 -
剑指offer面试题【26】----树的子结构【树】【Python】【递归】
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right...原创 2019-05-06 14:03:02 · 217 阅读 · 0 评论 -
剑指offer面试题【33】----二叉搜索树的后续遍历序列【Python】
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。代码实现# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): if len(sequence)==0: ...原创 2019-05-11 13:03:17 · 140 阅读 · 0 评论 -
剑指offer面试题【42】----连续子数组的最大和
题目描述给一个数组,返回它的最大连续子序列的和,例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。代码实现class Solution: def FindGreatestSumOfSubArray(self, array): # write code here if len(array)==...原创 2019-05-16 14:33:43 · 136 阅读 · 0 评论 -
剑指offer面试题【55.2】----平衡二叉树
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution...原创 2019-05-29 09:40:22 · 255 阅读 · 0 评论 -
剑指offer面试题【55.1】----二叉树的深度【递归】【Python】
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现解法一:递归的方法# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left =...原创 2019-05-28 13:20:59 · 328 阅读 · 0 评论 -
剑指offer面试题【50】----第一个只出现一次的字符【python】【enumerate()】
题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).代码实现import sysclass Solution: def FirstNotRepeatingChar(self, s): # write code here if ...原创 2019-05-23 18:23:44 · 208 阅读 · 0 评论 -
剑指offer面试题【52】----两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。代码实现# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindFirstCommonNode(s...原创 2019-05-26 18:24:02 · 146 阅读 · 0 评论 -
剑指offer面试题【49】----丑数
题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。代码实现思路一:判断每个数是不是丑数,效果不高效class Solution: def GetUglyNumber_Solution(self, index): # w...原创 2019-05-17 13:15:51 · 151 阅读 · 0 评论 -
剑指offer面试题【34】----二叉树中和为某一值的路径【二叉树】【递归】
题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)代码实现# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self...原创 2019-05-13 11:14:34 · 88 阅读 · 0 评论 -
剑指offer面试题【45】----把数组排成最小的数【全排列】【map函数】【python】
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。代码实现import itertoolsclass Solution: def PrintMinNumber(self, numbers): if len(numbers)==...原创 2019-05-17 10:46:01 · 171 阅读 · 0 评论 -
剑指offer面试题【43】----1~n整数中1出现的次数【count函数】
题目描述求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。1~13中包含1的数字有1、10、11、12、13因此共出现6次。代码实现# -*- coding:utf-8 -*-class Solution: def NumberOf1Between1AndN_Solution(self, n): # write code here ...原创 2019-05-16 14:38:55 · 193 阅读 · 0 评论 -
剑指offer面试题【41】----数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。代码实现# -*- coding:utf-8 -*-class Solution: d...原创 2019-05-16 14:35:59 · 133 阅读 · 0 评论 -
剑指offer面试题【25】----合并两个排序链表【单链表】【Python】
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。代码实现# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: ...原创 2019-05-06 11:08:01 · 117 阅读 · 0 评论 -
剑指offer面试题【30】----包含min函数的栈【Python】【栈】
题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。代码实现class Solution: def __init__(self): self.stack=[] self.minstack=[] def push(self, node): # write code ...原创 2019-05-08 14:34:15 · 191 阅读 · 0 评论 -
剑指offer面试题【29】----顺时针打印矩阵【解决思路】【数组】【Python】
题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.代码实现# -*- coding:utf-8 -*-class Solution: # matri...原创 2019-05-08 12:11:22 · 171 阅读 · 0 评论 -
剑指offer面试题【13】----机器人的运动范围【回溯法】【Pyhon】
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?代码实现# -*- coding...原创 2019-04-04 21:53:58 · 137 阅读 · 0 评论 -
剑指offer面试题【10.3】----变态青蛙跳台阶【递归和循环】【Python】
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。代码实现# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here return 2**(number-1)...原创 2019-03-22 21:29:53 · 234 阅读 · 0 评论 -
剑指offer面试题【10.2】&leetcode【70】----青蛙跳台阶【递归】【循环】【python】【斐波那契数列】
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。类似斐波那契数列代码实现# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here a=0 ...原创 2019-03-22 21:21:53 · 313 阅读 · 0 评论 -
剑指offer面试题【12】----矩阵中的路径【回溯法】【Python】
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...原创 2019-03-29 17:16:22 · 422 阅读 · 0 评论 -
剑指offer面试题【9】--用两个栈实现队列【栈】【队列】【python】
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码实现# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack1 = [] self.stack2 = [] def push(self, node): ...原创 2019-03-18 18:48:20 · 84 阅读 · 0 评论 -
剑指offer面试题【7】--重建二叉树【python】【递归】【二叉树】
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。代码实现# -*- coding:utf-8 -*-class TreeNode: def __init__(self, x):...原创 2019-03-16 18:06:07 · 112 阅读 · 0 评论 -
剑指offer面试题【6】--从头到尾打印链表【栈】【单链表】【C++】
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。代码实现/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* ...原创 2019-03-16 11:06:00 · 107 阅读 · 0 评论 -
剑指offer面试题【10.1】--斐波那契数列【循环】【递归】【Python】
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39代码实现class Solution: def Fibonacci(self, n): # write code here a=0 b=1 for i in range(n): ...原创 2019-03-20 11:21:12 · 150 阅读 · 0 评论 -
剑指offer面试题【5】--替换空格【Python】【字符串】
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。Python实现# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write cod...原创 2019-03-15 15:26:06 · 107 阅读 · 0 评论 -
剑指offer面试题----矩形覆盖【递归和循环】【Python】
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?代码实现# -*- coding:utf-8 -*-class Solution: def rectCover(self, number): # write code here if num...原创 2019-03-27 14:30:09 · 178 阅读 · 0 评论 -
剑指offer面试题【15】----二进制中1的个数【按位于】【Python】
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。代码实现# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): # write code here c = 0 if n<0: n = n&0xfff...原创 2019-03-28 21:57:24 · 102 阅读 · 0 评论 -
剑指offer面试题【24】----反转链表【单链表】
题目描述输入一个链表,反转链表后,输出新链表的表头。思路为了防止链表断开,使用三个指针进行操作,分别指向当前节点、它的前一个节点、后一个节点代码实现# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = ...原创 2019-05-05 13:51:58 · 147 阅读 · 0 评论 -
剑指offer面试题【22】----链表中倒数第k个节点【鲁棒性】【链表】【列表】
题目描述输入一个链表,输出该链表中倒数第k个结点。思路遍历一遍单链表,并把节点信息存到列表中,要输出倒数第k个节点,直接输出倒数第k个列表中的节点信息,列表的倒数第k个节点list[-k]直接取出,特别方便。如果链表的长度比k小,或者k<0,则返回None。代码实现# -*- coding:utf-8 -*-# class ListNode:# def __...原创 2019-05-05 12:50:29 · 69 阅读 · 0 评论 -
剑指offer面试题【18.2】----删除链表中重复的的节点【Python】【单链表】【代码的完整性】
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5注意头结点可能与后面的节点重复,也肯能被删除 为了保证删除之后的链表是相连的,要把当前节点的前一个节点和后面的值比当前节点的值大的节点相连代码实现# ...原创 2019-04-15 12:52:49 · 199 阅读 · 0 评论 -
剑指offer面试题【18.1】----删除链表的节点【Python】【单链表】【代码的完整性】【O(1)】
题目描述在O(1)时间内删除链表节点。给定单链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点。注意代码完整性,考虑以下三种情况如果要删除的节点后面有节点,则将该节点内容复制到要删除的节点,并删除该节点。 如果要删除的节点在链表头部,直接删除该节点。 如果要删除的节点在链尾,遍历至该节点删除。代码实现class ListNode(object): ...原创 2019-04-15 10:10:18 · 422 阅读 · 1 评论 -
剑指offer面试题【21】Leetcode【905】---Sort Array By Parity奇偶排序【Array】【Sort】【Easy】【C++】【Python】
题目描述给一个非负整数数组A,返回一个数组,该数组由A的所有偶数元素和A的所有奇数元素组成。偶数排在前面,奇数排在后面。偶数和奇数内部可以不排序。示例Input: [3,1,2,4]Output: [2,4,3,1]The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.Note1 &l...原创 2019-03-04 18:34:46 · 163 阅读 · 0 评论