06 2018 档案
摘要:线性表顺序存储结构的优缺点: 优点:1、无须为表示表中元素之间的逻辑关系而邢家额外的存储空间 2、可以快速地存取表中任一位置的元素 缺点 :1、插入和删除操作需要移动大量元素 2、当线性表长度变化较大时,难以确定存储空间的容量 3、造成存储空间的“碎片” 线性表的链式存储结构: 为了表示每个数据元素
阅读全文
摘要:在进行算法分析时,语句总是执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,基座:T(n)=O(f(n)).它表示岁问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复
阅读全文
摘要:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。 算法具有五个基本特性:输入、输出、有穷性、确定性和可行性。 算法具有零个或多个输入,算法至少有一个或多个输出,算法是一定要有输出的,不需要输出,你要这个算法干嘛。 有穷性:是指算法在执行有限的步骤之后
阅读全文
摘要:高斯: sum=1+2+3+...+99+100 sum=100+99+98+...+2+1 2*sum=101+101+101+...+101+101(共100个) 所以sum=5050 用程序实现如下:
阅读全文
摘要:数据结构是一门研究非数值计算的程序设计问题中的操作对象,一级他们之间的关系和操作等相关问题的学科。 数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符合集。数据不仅仅包括整型、实数型等数值类型,还包括字符及声音、图像、视频等非数值类型。 数据元素:是组成数
阅读全文
摘要:题目:给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如,给定数组nums=[-1,0,1,2,-1,-4], 满足要求的三元组集合为: [ [-1,0,1], [-1,-1,2
阅读全文
摘要:题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 示例: 给定nums=[2,7,11,15],target=9 因为num[0]+num[1]=2+7=9 所以返回[0,1] 解题思路: 1、看到这道题首先想到的解法就
阅读全文
摘要:题目:写一个函数,求两个整数之和,要求在函数体内不得使用“+、-、*、/”四则运算符号 解题思路:对数字做运算除了四则运算之外,也就只剩下位运算了。位运算是针对二进制的,我们就以二进制再来分析一下前面的三步走策略对二进制是不是也适用。 5的二进制是101,17的二进制是10001.还是试着把计算分成
阅读全文
摘要:题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标垫符号和普通字母一样处理。例如输入字符串“I am a student.”,则输出“student. a am I ”. 解题思路:第一翻转句子中所有的字符。比如翻转“I am a student.”中所有的字符得
阅读全文
摘要:和为S的两个数字 题目一:输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于s,输出任意一对即可。 解题思路:首先想到的方法是O(n^2)的方法,也就是先在数组中固定一个数字,再一次判断数组中其余的n-1个数字与它的和是不是等于s,面试官会告诉我们这
阅读全文
摘要:题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 解题思路:没扫描到一个数字的时候,逐个比较该数字和它后面的数字的大小,如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和O(
阅读全文
摘要:题目:我们把只包含银子2、3和5的数称作丑数。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7,习惯上我们把1当作第一个丑数。 解题思路:逐个判断每个整数是不是丑数的解法,直观但不够高效 所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n%m==0。根据
阅读全文
摘要:题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n). 解题思路: 我们试着从头到尾逐个累加示例数组中的每个数字。初始化为0。第一步加上第一个数字1,此时和为1.接下来第二步加上数字-2,和就变成了-1,第三步加上数
阅读全文
摘要:字符串的排列 题目:输入一个字符串,打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出字符a、b、c所能排列出来的所欲字符串abc、acb、bac、cab和cba. 解题思路: 我们把一个字符串看成由两部分组成:第一部分为它的第一个字符,第二部分是后面的所有字符。过程如下图所示:
阅读全文
摘要:题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列 解题方案: 总结上述入栈、出栈的过
阅读全文
摘要:题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5是某栈的压栈序列,序列4、5、3、2、1是该压栈序列对应的弹出序列,但4、3、5、1、2就不可能是该压栈序列的弹出序列 解题方案: 总结上述入栈、出栈的过
阅读全文
摘要:题目:二叉树的镜像 请完成一个函数,输入一个二叉树,该函数输出他的镜像。 树的镜像对很多人来说是一个新的概念,如下图所示: 解题步骤: 交换根节点的两个子结点之后,我们注意到值为10,6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。交换之后的结果分别如下图中的第三棵树和第四棵
阅读全文
摘要:题目:合并两个排序的链表 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按照递增排序的。例如输入图中链表1和链表2,则合并之后的升序链表如链表3所示。 思路解析: 首先分析合并两个链表的过程。我们的分析从合并两个链表的头节点开始。链表1的头结点的值小于链表2的头结点的值,因此链
阅读全文
摘要:题目:输入一个链表,输出该链表中倒数第K个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如一个链表有6个结点,从头结点开始他们的值一次是1、2、3、4、5、6.这个链表的倒数第3个结点是值为4的结点。 解题思路:本题中所给的链表是单向链表,单向链表的结点只有从前往
阅读全文
摘要:题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,是的所有奇数位与数组的前半部分,所有偶数位与数组的后半部分。 解题思路: 一般思路:维护两个指针,第一个指针初始化时指向数组的第一个数字,它只向后移动;第二个指针初始化时指向数组的最后一个数字,它只向前移动,在两个指针相遇之前,第一个指针
阅读全文
摘要:定义一个函数,在该函数中可以实现任意两个整数的加法。由于没有限定输入两个数的大小范围,我们也要把它当作大数问题来处理。 如果面试题是关于n位的整数并且没有限定n的取值范围,或者是输入任意大小的整数,那么这个题目很有可能是需要考虑大数问题的。字符串是一个简单、有效的表示大数的方法。 题目:给定单向链表
阅读全文
摘要:链表的结构很简单,它由指针把若干个节点连接成链状结构。由于链表是一种哄抬的数据结构,其操作需要对指针进行操作。因为在船舰链表时,无须知道链表的长度。当插入一个节点时,我们只需要为新节点分配内存,然后调整指针的指向来确保新节点被链接到链表当中。内存分配不是在创建链表时一次性完成的,而是每添加一个节点分
阅读全文
摘要:题目:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下: 解题思路: 面试官期待的使用解法,我们可以把已经得到的数列中间项保存起来,如果下次需要计算的时候我们先查找一下,如果前面已经计算过就不用再重复计算了。 更简单的办法时从下往上计算,首先根据f(0)和f(1)算出f(2),再根
阅读全文
摘要:栈的特点是后进先出,即最后别呀如栈的元素会第一个被弹出(pop)。 队列是另外一个很重要的数据结构。和栈不同的是,队列的特点是先进先出,即第一个进入队列的元素将会第一个出来。 题目:用两个栈是新啊一个队列。队列的声明那个如下,请实现它的两个函数apeendTail和deleteHead,分别完成在对
阅读全文
摘要:树是一种在实际编程中经常遇到的数据结构。他的逻辑很简单:除了根接待你之外每个节点中有一个父节点,根节点没有父节点;除了叶节点之外所有节点都有一个或多个子节点,叶节点没有子节点。父节点和子节点之间用指针链接。 二叉树的遍历方式: 前序遍历:先访问根节点,再访问左子节点,最后访问右子节点。 下图的前序遍
阅读全文
摘要:题目:请实现一个函数,把字符串中的每个空格替换成“%20”.例如输入“we are happy.”,则输出“we%20are%20happy.”. 解题思想:在网络编程中,如果URL参数中含有特殊字符,如空格、“#”等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别
阅读全文
摘要:题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中手否含有该整数。 解答思想:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的
阅读全文
摘要:数据验证 尽管在测试环境下模型工作良好,但是实践是检验真理的唯一标准。在本节中,我们通过自己的模型,与京东的测试数据进行比较验证。 衡量OCR系统的好坏有两部分内容:(1)是否成功地圈出了文字;(2)对于圈出来的文字,有没有成功识别。我们采用评分的方法,对每一张图片的识别效果进行评分。 评分规则:
阅读全文
摘要:由于图像质量等原因,性能再好的识别模型,都会有识别错误的可能性,为了减少识别错误率,可以将识别问题跟统计语言模型结合起来,通过动态规划的方法给出最优的识别结果。这是改进OCR识别效果的重要方法之一。 转移概率 在我们分析实验结果的过程中,有出现这一案例。由于图像不清晰等可能的原因,导致“电视”一词被
阅读全文
摘要:经过前面的文字定位和文本切割,我们已经能够找出图像中单个文字的区域,接下来可以建立相应的模型对单字进行识别。 模型选择 在模型方面,我们选择了深度学习中的卷积神经网络模型,通过多层卷积神经网络,构建了单字的识别模型。 卷积神经网络是人工神经网络的一种,已成为当前图像识别领域的主流模型。 它通过局部感
阅读全文
摘要:经过前面文字定位得到单行的文本区域之后,我们就可以想办法将单行的文本切割为单个的字符了。因为第三步的模型是针对单个的字符建立的,因此这一步也是必须的。 均匀切割 基于方块汉字的假设,事实上最简单的切割方法是均匀切割,也就是说不加任何判断,直接按照高度来将单行文本切割为一个个的正方形图片。这种思路可以
阅读全文
摘要:经过第一部分,我们已经较好地提取了图像的文本特征,下面进行文字定位。 主要过程分两步: 1、邻近搜索,目的是圈出单行文字; 2、文本切割,目的是将单行文本切割为单字。 邻近搜索 我们可以对提取的特征图进行连通区域搜索,得到的每个连通区域视为一个汉字。 这对于大多数汉字来说是适用,但是对于一些比较简单
阅读全文
摘要:连通性 可以看到,每一层的图像是由若干连通区域组成的,文字本身是由笔画较为密集组成的,因此往往文字也能够组成一个连通区域。这里的连通定义为 8邻接,即某个像素周围的8个像素都定义为邻接像素,邻接的像素则被定 义为同一个连通区域。 定义了连通区域后,每个图层被分割为若干个连通区域,也就是说,我们 逐步
阅读全文
摘要:灰度聚类 接着我们就对图像的色彩进行聚类。聚类的有两个事实依据: 1.灰度分辨率 肉眼的灰度分辨率大概为40,因此对于像素值254和255,在我们肉眼看来都 只是白色; 2.设计原则 根据我们一般的审美原则,在考虑海报设计、服装搭配等搭配的时候,一般要 求在服装、海报等颜色搭配不超过三种颜色。 更通
阅读全文
摘要:光学字符识别(Optical Character Recognition,OCR),是指将图像上的文字转化为计算机可编辑的文字内容。 分析流程: 作为OCR系统的第一步,特征提取是希望找出图像中候选的文字区域特征,以便我们在第二步 进行文字定位和第三步进行识别。在这部分内容中,我们集中精力模仿肉眼对
阅读全文
摘要:本人电脑配置的是Anconda环境+pycharm2017.2.2 comuniity,每次安装什么包就是直接pip install 的,但是这次在安装freetype的安装中却遇到了麻烦。 具体是在pycharm中自动下载freetype成功后,却加载不成功,一直提示找不到该module. 具体解
阅读全文

浙公网安备 33010602011771号