【前端-算法题系列 (七) => 实现 strStr()】教程文章相关的互联网学习教程文章

08-看图理解数据结构与算法系列(2-3树)【图】

2-3树 2-3树,是最简单的B-树,其中2、3主要体现在每个非叶子节点都有2个或3个子节点,B-树即是平衡树,平衡树是为了解决不平衡树查询效率问题,常见的二叉平衡书有AVL树,它虽然提高了查询效率,但是插入操作效率不高,因为它需要再每次插入节点后维护树的平衡,而为了解决查询效率同时有兼顾插入效率,于是提出了2-3树。 2-3树特点2-3树是一棵平衡树,但不是二叉平衡树。 对于高度相同的2-3树和二叉树,2-3树的节点数要大于满二叉...

03-看图理解数据结构与算法系列(双向链表)【图】

双向链表 双向链表属于链表的一种,也叫双链表双向即是说它的链接方向是双向的,它由若干个节点组成,每个节点都包含下一个节点和上一个节点的指针,所以从双向链表的任意节点开始,都能很方便访问他的前驱结点和后继节点。 双链表特点创建双链表时无需指定链表的长度。 比起单链表,双链表需要多一个指针用于指向前驱节点,所以需要存储空间比单链表多一点。 双链表的插入和删除需要同时维护 next 和 prev 两个指针。 双链表中的元...

04-看图理解数据结构与算法系列(二叉搜索树)【图】

关于树 对于树的数据结构大家都了解,只是树的类型有很多,所以可能又会对树产生一种陌生感。树其实就是由有限n(n>=1)个节点组成的一个具有层次关系的集合,它看起来像一棵倒挂的树,所以称之为“树”。 树的特点每个节点有若干个或0个子节点; 根节点没有父节点; 每一个非根节点有且只有一个父节点; 每个子节点可以分为多个不相交的子树;二叉搜索树 二叉搜索树(Binary Search Tree,简写BST),又称为二叉排序树,属于树的一种,...

05-看图理解数据结构与算法系列(基于数组的栈)【图】

栈 栈是一种线性存储结构且运算受限的线性表,它的插入和删除运算操作被限制在表的一端,该端称为栈顶,而另外一端则称为栈底。 栈中的数据以后进先出(Last In First Out 即LIFO)方式进出栈。 栈的实现 栈的实现方式有多种方式,主要是使用不同的结构来存储栈元素,比如使用数组、单向链表、双向列表等。这里看数组方式的实现。 实现的主要三要素是数组、当前栈顶下标以及栈操作集。数组用于存放元素,当前栈顶下标用于指引操作的位...

SSE图像算法优化系列二十四: 基于形态学的图像后期抗锯齿算法--MLAA优化研究。【代码】【图】

偶尔看到这样的一个算法,觉得还是蛮有意思的,花了将近10天多的时间研究了下相关代码。 以下为百度的结果:MLAA全称Morphological Antialiasing,意为形态抗锯齿是AMD推出的完全基于CPU处理的抗锯齿解决方案。对于游戏厂商使用的MSAA抗锯齿技术不同,Intel最新推出的MLAA将跨越边缘像素的前景和背景色进行混合,用第2种颜色来填充该像素,从而更有效地改进图像边缘的变现效果,这就是MLAA技术。其实就是这个是由Intel的工程...

[作业系列]算法第3章上机实践报告【代码】

1.实践题目 7-3编辑距离问题 2.问题描述设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d(A,B)。 对于给定的字符串A和字符串B,计算其编辑距离 d(A,B)。 输入格式: 第一行是字符串A,文件的第二行是字符串B。 提示:字符串长度不超过2000个...

数据结构与算法系列9--排序算法(冒泡、插入、选择)【代码】【图】

冒泡排序 思想: 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。如果不满足就让它俩互换。一次冒泡会让至少一个元素移动到它应该在的位置,重复n次,就完成了n个数据的排序工作。 #优化版本 def bubbleSort(data_list):n=len(data_list)if n<=1:returnfor i in range(n):flag=False#记录是否存在交换,提前退出冒泡循环的标志位for j in range(n-1-i):if data_list[j]>data_...

白话经典算法系列之一 冒泡排序的三种实现【代码】【图】

分享一下我的偶像大神的人工智能教程!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 冒泡排序是非常容易理解和实现,,以从小到大排序举例: 设数组长度为N。 1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 3.N=N-1,如果N不为0就重...

数据结构与算法系列7--队列【代码】

什么是队列? 1.先进者先出,这就是典型的“队列”结构。 2.支持两个操作:入队enqueue(),放一个数据到队尾;出队dequeue(),从队头取一个元素。所以,和栈一样,队列也是一种操作受限的线性表。 队列的应用也非常广泛,特别是一些具有某些额外特性的队列,比如循环队列、阻塞队列、并发队列。它们在很多偏底层系统、框架、中间件的开发中,起着关键性的作用。 实现队列的两种方式? 顺序队列和链式队列 跟栈一样,队列可以用数组...

SSE图像算法优化系列二十三: 基于value-and-criterion structure 系列滤波器(如Kuwahara,MLV,MCV滤波器)的优化。【代码】

基于value-and-criterion structure方式的实现的滤波器在原理上其实比较简单,感觉下面论文中得一段话已经描述的比较清晰了,直接贴英文吧,感觉翻译过来反而失去了原始的韵味了。 The value-and-criterion filter structure is based on the geometrical structure of mathematical morphology, but allows the use of a much wider variety of operations (both linear and nonlinear) than standard morphology. Morpho...

[作业系列]算法第二章上机实践报告

1.实践题目: 两个有序序列的中位数 2.问题描述:已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数。有序序列A?0??,A?1??,?,A?N?1??的中位数指A?(N?1)/2??的值,即第?(N+1)/2?个数(A?0??为第1个数)。 输入格式: 输入分三行。第一行给出序列的公共长度N(0<N≤100000),随后每行输入一个序列的信息,即N个非降序排列的整数。数字用空格间隔。 输出格式: 在一行中输出两个输入序列的并集序列的中位数。 3.算法描述...

[牛客算法系列] KMP算法【代码】

题目给定两个字符串source 和 match, 长度分别为 N 和 M。实现一个算法,如果字符串source 中,含有子串match, 则返回match 在 source 中的开始为位置,不含有返回-1. 举例 source = “acbc”, match = “bc” , 返回2. source = “acbc”, match = “bcc” , 返回-1; 要求,如果match 的长度大于source 的长度(M > N)source 必然不会含有match, 可直接返回-1。但如果N >= M ,要求时间复杂度为O(N).分析代码最普通的解法是从左...

LeetCode算法系列:89.Gray Code

题目描述: The gray code is a binary numeral system where two successive values differ in only one bit. Given a non-negative integer n representing the total number of bits in the code, print the sequence of gray code. A gray code sequence must begin with 0. Example 1:Input:?2 Output:? [0,1,3,2]Explanation: 00 - 0 01 - 1 11 - 3 10 - 2For a given?n, a gray code sequence may not be uniquely defined....

python剑指offer系列二叉树中和为某一值的路径

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)# -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution:# 返回二维列表,内部每个列表表示找到...

算法系列教程04 - 算法相关的基础概念【代码】【图】

前面几篇讲的都是一些背景知识,从这一篇开始我们正式讲算法,从算法的一些基本概念讲起。 什么是算法 通过上一篇对图灵机原理的讲解,我们知道,一个计算问题描述的是输入/输出之间的关系,如果根据给定的输入能设计一个程序计算出期望的输出,就认为这个问题可解。这个程序的计算过程就是用算法来描述的,通过算法这个工具我们就容易设计出这样的一个程序。 确切地说,算法是有限步骤的计算过程,该过程取某个值或集合作为输入,...