剑指offer
daisyyyyyyyy
这个作者很懒,什么都没留下…
展开
-
剑指offer:树的子结构(Python)
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Non...原创 2018-08-16 10:43:59 · 285 阅读 · 0 评论 -
剑指offer:替换空格(Python)
题目描述请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here s ...原创 2018-05-17 13:39:06 · 252 阅读 · 0 评论 -
剑指offer:数字在排序数组中出现的次数(python)
题目描述统计一个数字在排序数组中出现的次数。# -*- coding:utf-8 -*-class Solution: def GetNumberOfK(self, data, k): # write code here return data.count(k)原创 2018-05-04 09:44:48 · 393 阅读 · 0 评论 -
剑指offer:把数组排成最小的数(python)
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:https://blog.csdn.net/qq_33431368/article/details/79325475# -*- coding:utf-8 -*-class Solution: def ...原创 2018-04-26 09:44:53 · 1307 阅读 · 0 评论 -
剑指offer:左旋转字符串(python)
题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!# -*- coding:utf-8 -*-class Solution: def Left...原创 2018-05-03 14:41:14 · 240 阅读 · 0 评论 -
剑指offer:栈的压入、弹出序列(python)
题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路:python判断栈的弹出序列是否合法# -*- coding:utf-8 -*-cla...原创 2018-04-25 11:11:29 · 742 阅读 · 0 评论 -
剑指offer:从尾到头打印链表(Python)
题目描述输入一个链表,从尾到头打印链表每个节点的值。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] de...原创 2018-05-08 20:45:04 · 248 阅读 · 0 评论 -
剑指offer:和为S的两个数字(python)
题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。# -*- coding:utf-8 -*-class Solution: def FindNumbersWithSum(self, array, tsum): # write code...原创 2018-04-20 09:11:39 · 134 阅读 · 0 评论 -
剑指offer:数组中的重复数字(python)
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。# -*- coding:utf-8 -*-import collectionsclass Solution: #...原创 2018-04-24 13:45:33 · 944 阅读 · 0 评论 -
剑指offer:对称的二叉树(python)
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right ...原创 2018-04-14 10:19:55 · 457 阅读 · 0 评论 -
剑指offer:二叉树的下一个结点(python)
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。# -*- coding:utf-8 -*-# class TreeLinkNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2018-05-05 13:17:51 · 198 阅读 · 0 评论 -
剑指offer:链表中倒数第k个结点(Python)
题目描述输入一个链表,输出该链表中倒数第k个结点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindKthToTail(self, head, k):...原创 2018-05-18 15:12:34 · 423 阅读 · 0 评论 -
剑指offer:顺时针打印矩阵(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.思路解法一:可以模拟魔方逆时针旋转的方法,一直做取出第一行的操作例如 1 2 34 5 6...原创 2018-07-24 20:08:25 · 2842 阅读 · 0 评论 -
剑指offer:二叉搜索树的第k个结点(Python)
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中 按结点数值大小顺序第三个结点的值为4分析二叉搜索树的中序遍历正好是一个递增的序列, 因此中序遍历的第K个结点就是二叉搜索树的第K个节点。递归代码# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):#...原创 2018-07-11 19:43:51 · 1128 阅读 · 0 评论 -
剑指offer:二维数组的查找(Python)
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路:从左下角元素往上查找,右边元素是比这个元素大,上边是的元素比这个元素小。于是,target比这个元素小就往上找,比这个元素大就往右找。如果出了边界,则说明二维数组中不存在target...原创 2018-07-17 17:48:52 · 2880 阅读 · 0 评论 -
剑指offer:重建二叉树(Python)
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。思路:算法设计思想 前序遍历序列的第一个元素为根结点的值,然后在中序遍历序列中寻找根节点的值的位置(索引)。 从中序遍历序列的起始位置到根结点的值的位置...原创 2018-06-06 10:02:43 · 2231 阅读 · 1 评论 -
剑指offer:从上往下打印二叉树(Python)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: #...原创 2018-05-16 16:15:55 · 478 阅读 · 0 评论 -
剑指offer:二叉树中和为某一值的路径(Python)
题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2018-05-15 12:52:06 · 1049 阅读 · 0 评论 -
剑指offer:合并两个排序的链表(Python)
题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回合并后列表...原创 2018-05-14 13:05:02 · 123 阅读 · 0 评论 -
剑指offer:数据流中的中位数(Python)
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.data=[] def Insert(self...原创 2018-05-07 10:43:05 · 787 阅读 · 0 评论 -
剑指offer:数组中出现次数超过一半的数字(Python)
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。class Solution: def MoreThanHalfNum_Solution(self, numbers): # write code here...原创 2018-05-06 18:58:31 · 235 阅读 · 0 评论 -
剑指offer:孩子们的游戏(python)
题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去.......原创 2018-04-19 10:56:32 · 755 阅读 · 0 评论 -
剑指offer:旋转数组的最小数字(python)
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-class Solution: def minNumberI...原创 2018-04-13 09:43:45 · 142 阅读 · 0 评论 -
剑指offer:数组中只出现一次的数字(python)
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。# -*- coding:utf-8 -*-class Solution: # 返回[a,b] 其中ab是出现一次的两个数字 def FindNumsAppearOnce(self, array): # write code here temp = ...原创 2018-04-22 09:44:54 · 429 阅读 · 0 评论 -
剑指offer:求1+2+3+...+n(python)
题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。第一种:递归# -*- coding:utf-8 -*-class Solution: def Sum_Solution(self, n): # write code here return n and (n...原创 2018-03-21 10:56:28 · 1986 阅读 · 0 评论 -
剑指offer:跳台阶(python)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。变态跳台阶上次变态跳台阶那题里提到过这种情况,思路依然相同。只是用递归python会超时,改用循环。# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here ...原创 2018-03-24 11:54:07 · 277 阅读 · 0 评论 -
剑指offer:斐波那契数列(python)
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39代码:# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here if n>39: return None i...原创 2018-03-30 09:18:37 · 231 阅读 · 0 评论 -
剑指offer:构建乘积数组(python)
题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。思路:在牛客网的这道题的评论下面看到很好的思路链接:https://www.nowcoder.com/questionTerminal/94a4d381a68b47b7a8bed86f297...原创 2018-03-20 11:06:38 · 1650 阅读 · 3 评论 -
剑指offer:二进制中1的个数(python)
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): if n >= 0: bina = bin(n) count = bina.count('1') ...原创 2018-03-23 10:54:44 · 592 阅读 · 1 评论 -
剑指offer:变态跳台阶(python)
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:数学归纳法n=1;jumpWays=1(即:1); n=2;jumpWays=2(即:1-1,2);n=3;jumpWays=4(即:1-1-1,1-2,2-1,3);n=4;jumpWays=8(即:1-1-1-1,1-2-1,2-1-1,1-1-2,2-2,1-3,3-1...原创 2018-03-19 11:18:59 · 856 阅读 · 0 评论 -
剑指offer:平衡二叉树(python)
题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def g...原创 2018-03-18 16:42:26 · 266 阅读 · 0 评论 -
剑指offer:不用加减乘除做加法(python)
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。# -*- coding:utf-8 -*-class Solution: def Add(self, num1, num2): # write code here while num2 != 0: temp = num1 ^ num2 ...原创 2018-03-18 16:40:16 · 1178 阅读 · 0 评论 -
剑指offer:二叉树的深度(python)
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.r...原创 2018-03-18 16:34:14 · 207 阅读 · 0 评论 -
剑指offer:两个链表的第一个公共结点(python)
题目描述输入两个链表,找出它们的第一个公共结点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def FindFirstCommonNode(self, pHead1...原创 2018-04-08 09:16:05 · 272 阅读 · 0 评论 -
剑指offer:整数中1出现的次数(python)
题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。# -*- coding:utf-8 -*-class Solution: def NumberOf...原创 2018-03-31 09:24:33 · 1037 阅读 · 0 评论 -
剑指offer:把二叉树打印成多行(python)
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:1、把每层节点的val值用list存好2、把每层节点存好:①计算当层节点的个数,这样就保证下一步每层的结点都被pop光②然后依次弹出从左到右的每个节点,然后在list中加入该节点对应的左结点、右节点(如果存在的话)# -*- coding:utf-8 -*-# class TreeNode:# def __i...原创 2018-04-17 11:27:10 · 316 阅读 · 0 评论 -
剑指offer:反转链表(python)
题目描述输入一个链表,反转链表后,输出链表的所有元素。# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(self, pHead): #...原创 2018-04-16 17:04:22 · 212 阅读 · 0 评论 -
剑指offer:字符流中第一个不重复的字符(python)
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:Insert函数用来接收字符,构成字符流。FirstAppearingOnce函数用来判断是否为第一个只出现一次的...原创 2018-04-11 08:52:13 · 197 阅读 · 0 评论 -
剑指offer:数值的整数次方(python)
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # write code here flag = 0 if base==0: ...原创 2018-04-10 17:19:56 · 660 阅读 · 0 评论 -
剑指offer:链表中环的入口结点(python)
题目描述一个链表中包含环,请找出该链表的环的入口结点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def EntryNodeOfLoop(self, pHead):...原创 2018-04-15 20:40:52 · 590 阅读 · 0 评论