- 博客(27)
- 收藏
- 关注
原创 剑指offer(22)
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。# -*- coding:utf-8 -*-class Solution: def VerifySquenceOfBST(self, sequence): # write code here #若数组为空则返回fa...
2018-08-02 14:40:46
239
原创 剑指offer(21)
从上往下打印出二叉树的每个节点,同层节点从左至右打印。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: # ...
2018-08-01 20:27:40
248
原创 剑指offer(21)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)# -*- coding:utf-8 -*-class Solution: def...
2018-08-01 19:55:26
249
原创 剑指offer(20)
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.stack = [] self.minstack = [] #由于要求找最小值时间复杂度为O(1),因此要借...
2018-08-01 16:33:44
243
原创 剑指offer(18)
操作给定的二叉树,将其变换为源二叉树的镜像。递归交换左右结点的值# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution:...
2018-08-01 11:38:02
304
原创 剑指offer(17)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)先判断是否为空,递归判断左右子树是否是给定树的子结构。# -*- coding:utf-8 -*-# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...
2018-08-01 11:36:40
408
原创 剑指offer(16)
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。要记得固定一个指针在链表头,一个指针随着新插入的数往后走 # -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Non...
2018-07-26 22:37:05
195
原创 剑指offer(15)
输入一个链表,反转链表后,输出新链表的表头。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回ListNode def ReverseList(se...
2018-07-26 22:18:54
227
原创 剑指offer(14)
输入一个链表,输出该链表中倒数第k个结点。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = None'''方法1:把结点全部入栈,然后出栈k个方法2:设置两个指针指向头结点,p先移动k-1,然后p、q一起移动...
2018-07-25 17:15:13
215
原创 剑指offer(13)
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。两种思路:1、重新申请两个数据,按照奇偶分别放入后相加 2、利用插入排序思想,一个指针指向头,另一个指向后面一个位置。前偶后奇则将奇数前的元素向后移,将奇数插入第一个指针所指位置# -...
2018-07-25 16:08:16
165
原创 剑指offer(12)
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方考虑递归,分三种情况:exp>0、exp<0和exp=0# -*- coding:utf-8 -*-class Solution: def Power(self, base, exponent): # write code here ...
2018-07-23 21:22:11
255
原创 关于排序
不稳定:快(快速排序)些(shell排序)选(选择排序)队(堆排序)算法复杂度和关键字顺序无关的有:顺口溜:一堆(堆排序)海龟(归并排序)选(选择排序)基(基数排序)友http://www.cnblogs.com/Xieyang-blog/p/8340578.html1、直接插入排序:把后面未排序部分的首个数插入到前面已排序部分的正确位置上去,直到全部排好顺序。直接插入排序是稳...
2018-07-16 17:17:25
334
原创 刷题时遇到的关于算法问题的总结(递归篇)
1.递归次数取决于递归树,而递归树取决于轴枢的选择。树越平衡,递归次数越少。而对分区的长短处理顺序,影响的是递归时对栈的使用内存,而不是递归次数;2.主项定理:https://blog.youkuaiyun.com/RizeJin/article/details/5916833;3.递归工作栈里面包括返回地址、本层的局部变量、和递归调用的形参,所以正常情况下,无论递归过程有没有使用局部变量,转换为非递...
2018-06-27 15:09:42
466
原创 刷题时遇到的关于算法问题的总结(查找篇)
1.就平均查找长度而言,二分最小,分块次之,顺序最大;2.就平均查找速度而言,哈希<二分<分块<顺序;3.在二分查找时,未找到中间值则high = mid - 1(or low = mid + 1),计算中间值下标时一般使用mid = (low + high) / 2;4.有序的顺序表才能二分查找;5.对于分块查找,长为n的表,分成b个块,每个块s个数据,则b =...
2018-06-26 10:51:35
545
原创 剑指offer(11)
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。# -*- coding:utf-8 -*-class Solution: def NumberOf1(self, n): # write code here #return sum([(n>>i & 1) for i in range(0,32)]) ...
2018-04-19 20:15:44
196
原创 剑指offer(10)
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?# -*- coding:utf-8 -*-class Solution: def rectCover(self, number): # write code here if(number <= 0): ...
2018-04-19 19:00:48
198
原创 剑指offer(9)
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。# -*- coding:utf-8 -*-class Solution: def jumpFloorII(self, number): # write code here return 2**(number-1) ...
2018-04-10 12:08:19
192
原创 剑指offer(8)
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。# -*- coding:utf-8 -*-class Solution: def jumpFloor(self, number): # write code here if(number==1): return 1 el...
2018-04-09 13:32:33
192
原创 剑指offer(7)
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here if(n==0): return 0 elif(n==1 ...
2018-04-08 21:38:22
224
原创 剑指offer(6)
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。# -*- coding:utf-8 -*-class Solution: def minNumberIn...
2018-04-07 21:32:02
166
原创 剑指offer(5)
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。# -*- coding:utf-8 -*-class Solution: def __init__(self): self.StackA = [] self.StackB = [] def push(self, node): ...
2018-04-04 13:05:05
188
原创 剑指offer(4)
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。链接:https://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6来源...
2018-04-03 14:29:53
241
原创 剑指offer(3)
输入一个链表,从尾到头打印链表每个节点的值。# -*- coding:utf-8 -*-# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: # 返回从尾部到头部的列表值序列,例如[1,2,3] de...
2018-04-03 13:56:27
202
原创 剑指offer(2)
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。# -*- coding:utf-8 -*-class Solution: # s 源字符串 def replaceSpace(self, s): # write code here s =...
2018-04-03 13:41:50
131
原创 剑指offer(1)
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code he...
2018-04-03 13:33:21
266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人