09 2020 档案

摘要:题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 解答 # coding:utf-8 class ListNode: def __ 阅读全文
posted @ 2020-09-28 20:11 aaronthon 阅读(116) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解答 先判断A、B是否为空,有一个为空,就返回False(ps:我们约定空树不是任意一个树的子结构)。 在A、B都不为空的情况下: 1、判断B的根是否在A里面,如果A的根等于B的跟,那么分别在A的左 阅读全文
posted @ 2020-09-28 17:43 aaronthon 阅读(121) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解答 # coding:utf-8 # 创建结点 class ListNode: def __init__(self,x, next=None): self.val = x self.next = 阅读全文
posted @ 2020-09-28 15:05 aaronthon 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个链表,输出该链表中倒数第k个结点。 解答 方法一: 先将链表反转,再正序输出第k哥节点。如下: # coding:utf-8 class ListNode: def __init__(self, x): self.val = x self.next = None class Sol 阅读全文
posted @ 2020-09-27 17:14 aaronthon 阅读(99) 评论(0) 推荐(0) 编辑
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 解答 # coding:utf-8 class Solution: def Power(self, base, exponent): # 阅读全文
posted @ 2020-09-27 14:46 aaronthon 阅读(141) 评论(0) 推荐(0) 编辑
摘要:1. 原码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 1111 , 0111 1111] 阅读全文
posted @ 2020-09-27 14:22 aaronthon 阅读(208) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。 解答 # coding:utf-8 class Solution: def NumberOf1(self, n): if n < 0: # 当n是负数,通过& 0xffffffff求得负数的补码 n = n & 0xf 阅读全文
posted @ 2020-09-27 14:18 aaronthon 阅读(90) 评论(0) 推荐(0) 编辑
摘要:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 比如n=3时,2*3的矩形块有3种覆盖方法: 解答: 本质是递归: # coding:utf-8 class Solution: def jumpFloor(self, 阅读全文
posted @ 2020-09-27 10:14 aaronthon 阅读(165) 评论(0) 推荐(0) 编辑
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法 解答 归纳法:共有2的n-1次放种跳法。 # -*- coding:utf-8 -*- class Solution: def jumpFloorII(self, number): 阅读全文
posted @ 2020-09-25 15:31 aaronthon 阅读(112) 评论(0) 推荐(0) 编辑
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解答 本质就是斐波那契数列 # coding:utf-8 class Solution: def jumpFloor(self, number): # write cod 阅读全文
posted @ 2020-09-25 15:13 aaronthon 阅读(84) 评论(0) 推荐(0) 编辑
摘要:题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 n<=39 解答 # coding:utf-8 class Solution: def Fibonacci(self, n): # write code here a = 0 阅读全文
posted @ 2020-09-25 14:25 aaronthon 阅读(118) 评论(0) 推荐(0) 编辑
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组[3,4,5,1,2]为[1,2,3,4,5]的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解答 如果数组第 阅读全文
posted @ 2020-09-25 13:26 aaronthon 阅读(99) 评论(0) 推荐(0) 编辑
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解答 第一个栈用来进行入栈操作。 第二个栈进行出栈操作。 当第二个栈为空时,将第一个栈的元素全部倒序加到第二个栈里面。 # coding:utf-8 class Solution: def __init_ 阅读全文
posted @ 2020-09-25 10:09 aaronthon 阅读(111) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解答 前序打印先打父节点,再打左节点、最后打右节点, 阅读全文
posted @ 2020-09-24 21:10 aaronthon 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解答 1,循环每一行,先判断当前行的最后一个元素与target是否相等,相等则return。 2 阅读全文
posted @ 2020-09-24 11:16 aaronthon 阅读(88) 评论(0) 推荐(0) 编辑
摘要:def ma(li): if not li: return li n = len(li) m = [] for i in range(n-1): nn = 0 for j in range(i+1, n-1): if li[i] < li[j]: nn += 1 m.append(nn) print 阅读全文
posted @ 2020-09-24 11:02 aaronthon 阅读(175) 评论(0) 推荐(0) 编辑
摘要:一、二叉树 二叉树是一种特殊的树,其特点如下: 二叉树每个节点最大只能有两个节点。 二叉树的子树也就是节点有左右之分,即左节点和右节点,次序不能乱。 二叉树即使只有一个子树,也有左右之分。 二、满二叉树 一种特殊的二叉树,其所有的分支节点都有两棵树,其所有的叶子节点都在同一层内。 所有的叶子节点都在 阅读全文
posted @ 2020-09-12 21:41 aaronthon 阅读(356) 评论(0) 推荐(0) 编辑
摘要:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 给定表M,存在函数f(key),对任意给定的关键字值key,代入函 阅读全文
posted @ 2020-09-12 00:12 aaronthon 阅读(271) 评论(0) 推荐(0) 编辑
摘要:给一个二维数组列表,表示迷宫。0表示通道,1表示围墙。给出算法,求一条走出迷宫的路径。 如下图: 代码如下: # coding: utf-8 # 迷宫问题使用栈来实现 # 定义迷宫 1:表示墙 0:表示路 maze = [ [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 阅读全文
posted @ 2020-09-11 22:51 aaronthon 阅读(517) 评论(0) 推荐(0) 编辑
摘要:# coding: utf-8 class Node(object): def __init__(self, data, next=None): self.data = data self.next = next def reverserNode(head): if head == Node or 阅读全文
posted @ 2020-09-10 19:39 aaronthon 阅读(78) 评论(0) 推荐(0) 编辑
摘要:栈并不是python的内建类型。python程序员在必要的时候可以使用python列表来模拟基于数组的栈。如果你将列表的末尾看作是栈的顶,列表方法append就是将元素压入到栈中,而列表方法pop会删除并返回栈顶的元素。这种选择的主要缺点是,所有其他的列表操作都可以操作这个栈。这写额外的操作都违反了 阅读全文
posted @ 2020-09-08 17:44 aaronthon 阅读(243) 评论(0) 推荐(0) 编辑
摘要:栈是线性的集合,其中,访问都严格地限制在一端,也叫做顶(top)。栈地=的一个经典的类比,就是每个每个餐馆都能看到摞起来的干净餐盘。当需要用一个餐盘的时候,从一摞餐盘的顶部去走一个,当任何洗干净的餐盘放回到厨房的时候,他们也都是放在一摞的顶部。没有人会专门从中间抽取一个很好的餐盘,靠近底部的餐盘甚至 阅读全文
posted @ 2020-09-08 15:52 aaronthon 阅读(592) 评论(0) 推荐(0) 编辑
摘要:双链表结构比单链表结构更有优越性。它允许用户做如下的事情: 从给定的节点,向左移动到前一个节点。 直接移动到最后一个节点。 双链表结构的节点类的python实现,通过给provious指针添加一个字段,扩展了前面所讨论的Node类。如下是两个类的代码: # coding: utf-8 class N 阅读全文
posted @ 2020-09-08 14:28 aaronthon 阅读(269) 评论(0) 推荐(0) 编辑
摘要:在单链表结构上,在第1个节点插入和删除,只不过是第i个节点的插入和删除的特殊情况。这些情况只所以特殊,是因为head指针必须重置。可以使用一个带有哑头节点循环链表结构来简化这些操作。循环链表结构包含了从结构中的最后一个节点返回到第一个节点的链接。在这个实现中,至少总是有一个节点。这个节点也就是哑头节 阅读全文
posted @ 2020-09-07 17:49 aaronthon 阅读(405) 评论(0) 推荐(0) 编辑
摘要:单链表结构表现出和数组不同的时间和空间权衡。 下表为单链表结构的运行时间: 操作 运行时间 在第i个位置访问 O(n),平均情况 在第i个位置替换 O(n),平均情况 在开始处插入 O(1),最好情况和最差情况 在开始处删除 O(1),最好情况和最差情况 在第i个位置插入 O(n),平均情况 在第i 阅读全文
posted @ 2020-09-07 15:41 aaronthon 阅读(141) 评论(0) 推荐(0) 编辑
摘要:一、从开始处删除 从开始处删除,通常可以假设结构中至少有一个节点。这个操作返回删除项。其形式如下: # coding: utf-8 class Node(object): def __init__(self, data, next=None): self.data = data self.next 阅读全文
posted @ 2020-09-04 21:52 aaronthon 阅读(2643) 评论(0) 推荐(0) 编辑
摘要:一、在开始处插入 链表结构存在优于线性操作的几种操作。再某些情况下,这些操作使得链表结构比数组更加合适。第一种情况就是在结构的开始处插入一项。如下: # coding: utf-8 class Node(object): def __init__(self, data, next=None): se 阅读全文
posted @ 2020-09-04 20:55 aaronthon 阅读(3437) 评论(0) 推荐(0) 编辑
摘要:在单链表结构中的替换也利用了遍历模式。这种情况下,我们在链表结构中搜索一个给定项或一个给定位置,并且用新的项替换该项。第一个操作,即替换一个给定的项,并不需要假定目标项在链表结构中。如果目标项不存在,那就不会发生替换,并且该操作返回False。如果目标项存在,新的项会替换它,并且该操作返回True。 阅读全文
posted @ 2020-09-04 19:34 aaronthon 阅读(395) 评论(0) 推荐(0) 编辑
摘要:链表结构的顺序搜索和遍历是类似的,因为也必须从第1个节点开始且沿着链表直到遇到哨兵。下面例子可能会遇到两个哨兵: 空链接,表明不再有需要检查的数据。 等于目标项的一个数据项,表明一次成功的搜索。 # coding: utf-8 class Node(object): def __init__(sel 阅读全文
posted @ 2020-09-04 14:15 aaronthon 阅读(346) 评论(0) 推荐(0) 编辑
摘要:问题原因: gitbook在build生成html以后左侧菜单的超链接不能点击了, 主要是gitbook不在支持本地模式了 既然不能点击, 那就自己修改一下, 添加个js点击事件, 让页面跳转即可 使用方法: 在每个md文件中添加以下代码即可 <script type="text/javascrip 阅读全文
posted @ 2020-09-04 10:05 aaronthon 阅读(927) 评论(0) 推荐(0) 编辑
摘要:几乎数组上所有的操作都是基于索引的,而索引是数组结构一个不可或缺的部分。在链表结构上,必须通过操作结构在的链接来模拟基于索引的操作。 访问链表的每一个节点,而不删除它们,这种操作叫做遍历。 它使用的是临时的指针变量,这个变量先初始化链表结构的head指针,然后控制一个循环,如下: # coding: 阅读全文
posted @ 2020-09-04 10:00 aaronthon 阅读(1901) 评论(0) 推荐(0) 编辑
摘要:节点变量会初始化为None值或者一个新的None对象。 class Node(object): def __init__(self, data, next=None): self.data = data self.next = next # 仅仅是空链接 node1 = None # 一个包含数据和 阅读全文
posted @ 2020-09-03 20:30 aaronthon 阅读(1234) 评论(0) 推荐(0) 编辑
摘要:单链表节点只包含了一个数据项和对下一个节点的引用。如下: class Node(object): def __init__(self, data, next=None): self.data = data self.next = next 节点类很简单。灵活性和易用性很关键,因此一个节点对象的实例变 阅读全文
posted @ 2020-09-03 19:33 aaronthon 阅读(824) 评论(0) 推荐(0) 编辑
摘要:在数组之后,链表结构(linked structure)可能是程序员最常用到的数据结构。和数组一样,链表结构是一个具体的数据类型,它实现了很多类型的集合,包括列表。 一、单链表结构和双链表结构 链表结构包含了链接到其他项的项。尽管各项中包含很多链接也是可能的,但链表结构的两种最简单的结构是单链表结构 阅读全文
posted @ 2020-09-03 15:12 aaronthon 阅读(229) 评论(0) 推荐(0) 编辑
摘要:一、数组 数组(array)表示的是可以在给定的索引位置访问或替代的项的一个序列。你可能认为,这表述和python列表的表述有点像。实际上,python列表的底层数据结构就是数组。尽管python程序员通常会在你想要使用数组的地方使用列表,但是在python和许多其他的编程语言中,集合中的实现结构主 阅读全文
posted @ 2020-09-01 21:34 aaronthon 阅读(161) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示