自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 收藏
  • 关注

原创 基于VSRS视点合成

这一节主要是讲解基于VSRS视点合成,包括左右、前后以及全方位视点合成效果!一、前期工作 VS2013安装、OpenCV、VSRS安装配置以及YUV player,具体详见:VS2013+OpenCV2.4.9+VSRS3.5二、视点合成准备工作 这部分仍然需要用到VS2013,因为可能需要用VS2013跑一个根据左右视点得到虚拟视点的...

2020-07-26 22:55:12 480

原创 Python模块——标准库\开源模块\自定义模块

一、定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件。 包:用来从逻辑上组织模块,本质就是一个目录(必须有一个__init__.py文件)二、导入方法 import module_name import module1_name,module2_nam...

2019-11-17 12:11:59 645

原创 PSNR&&SSIM(MATLAB)

一、PSNR.mclear;name = 'balloons336';file_path = ['result\',name,'\'];%图像文件夹路径gndname = 'balloons6_1.bmp';gnd = imread(strcat(file_path,gndname));%读ground-truth图像img_path_list = dir(strcat(file_...

2019-10-22 09:22:29 1603 4

原创 18.Unsupervised Learning-Word Embedding

1.word embedding的含义 Word embedding指的是机器从许多文档中非监督学习到词语的含义 表示词语的含义有许多方法,最简单的是1-of-N encoding,但这个方法可以独立表示每个词,但词与词之间的关联并不能表示出来,并且0-1序列过于庞大了。Word class也是一种方法,将词汇分为不同的类,但这种分类太粗糙了。较好的方法即使今天介绍的w...

2019-10-18 08:32:46 282

原创 10.Ubuntu16.04安装torch

一、安装torch Torch是一个基于Lua语言的深度学习框架,官网地址https://github.com/torch,安装torch7官方有文档,按照文档可完成http://torch.ch/docs/getting-started.html#_ 1.查看cuda版本和cudnn版本nvcc -Vcat /usr/local/cuda/include...

2019-10-10 17:10:22 1336

原创 随机深林

一、Bagging和Boosting的概念与区别 该部分主要学习自:http://www.cnblogs.com/liuwu265/p/4690486.html 随机森林属于集成学习(Ensemble Learning)中的bagging算法。在集成学习中,主要分为bagging算法和boosting算法。我们先看看这两种方法的特点和区别。 Bagg...

2019-09-04 14:43:36 311

原创 二叉排序树(BST)、平衡二叉树(AVL)、B-树、B+树

目录一、二叉排序树 1.二叉排序树(BST)定义 2.二叉排序树的操作二、平衡二叉树(AVL) 1.平衡二叉树的定义 2.平衡二叉树的建立 3.平衡调整 4.平衡二叉树实现的实例三、B-树(B树) 1.为什么会出现B树 2. B树的基本概念 3...

2019-08-21 22:45:49 2064

原创 排序算法(直接插入、折半插入、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数类排序)

目录一、概述二、算法复杂度三、插入类排序 1.直接插入排序 2.折半插入排序 3.希尔排序四、交换类排序 1.冒泡排序 2.快速排序五、选择类排序 1.简单选择排序 2.堆排序六、归并排序 1.二路归并排序七、基数排序 1.基数...

2019-08-16 21:29:43 10773 7

原创 Python算法——如何求两个有序集合的交集

要求: 两个有序集合,集合中每个元素都是一段范围,求其交集。例如集合{[4,8],[9,13]}和{[6,12]}的交集为{[6,8],[9,12]}。分析: 方法一:蛮力法 最简单方法就是遍历两个集合,针对集合中每个元素判断是否有交集,如果有,则求其交集。 方法二:特征法 方法一没有利用集合有序的特点,因此,不是...

2019-08-12 18:21:27 2641

原创 Python算法——如何从三个有序数组中找出公共元素

要求:给定以非递减顺序排序的三个数组,找出这三个数组的公共元素。如ar1 = [2,5,12,20,45,85],ar2 = [16,19,20,85,200], ar3 = [3,4,15,20,39,72,85,190],那么其公共元素为[20,85]。分析: 假设当前遍历的三个数组元素分别为ar1[i]、ar2[j]、ar3[k],则存在以下几种可能性: ...

2019-08-12 16:56:41 966

原创 Python算法——如何求解迷宫问题(回溯法)

要求: 给定一个N*N的迷宫,从迷宫左上角(对应矩阵[0][0])走到迷宫右下角(对应矩阵[N-1][N-1]),只能向两方向移动:向右或向下。在迷宫中0表示没有路,1表示有路。分析: 这里使用回溯法,当碰到死胡同时,回溯到前一步,然后从前一步出发继续寻找可达路径。 申请一个结果矩阵用来标记移动路径 if 到达了目的地 ...

2019-08-12 15:41:50 3804

原创 Python算法——如何寻找最多的覆盖点

要求: 列表上从左到右依次为点a[0]、a[1]、a[2]、a[3]...a[n-1],假设一根木棒长度为L,求L最多能覆盖列表的几个点?分析: 本题求a[j]-a[i]≤L && a[j+1]-a[i]>L(其中i<j)这两个条件的 j 与 i 中间所有点的个数中的最大值,即 j-i+1 最大,思路为直接从左到右扫描,使用两个索引 ...

2019-08-12 10:32:50 972

原创 Python算法——如何在有规律的二维数组中进行高效数据查找

要求: 二维数组每一行按照从左到右递增顺序排列,每一列按照从上到下顺序排列。实现一个函数,输入一个整数判断数组中是否含有该整数。分析: 最简单的方法就是对二维数组进行顺序遍历,然后判断待查找元素是否在数组中,这种时间复杂度为O(M*N),M,N分别为二维数组行数和列数。但顺序遍历不是最好的方法,当数组有序的时候,二分查找是一个很好的方法,具体思路如下:给定数...

2019-08-11 19:36:08 1001

原创 Python算法——对数组进行循环移位

要求: 对含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量。分析: 方法一:蛮力法 要求将数组元素循环右移K位,只需要每次将数组中元素右移一位,循环K次即可。如原数组为abcd1234,右移4位具体移动过程为abcd1234-->4abcd123-->34abcd12-->1234abcd。...

2019-08-11 19:01:22 4821

原创 Python算法——求集合的所有子集

要求: 有一个集合,求其全部子集(包含集合自身)。例如集合[1,2,3]其全部子集为:<∅,1,2,12,3,13,23,123>分析: 方法一:位图法 ①使用两层循环,外层循环为子集个数,对于集合长度为N,子集个数为。外层循环每循环一次一个子集。内层循环用来判断二进制下标为i的位置数是否为"1",如果对应位为1,那么就输出这个位...

2019-08-11 17:32:05 18833 5

原创 Python算法——对数组逆时针45°旋转

要求: 将一个n*n的二维数组逆时针旋转45°后打印。 分析: 从右上角开始对数组中的元素进行输出实现代码:# -*- coding:utf-8 -*-def rotateArr(arr): lens = len(arr) #打印二维数组对角线右上半部分 i = lens-1 while i > 0: ...

2019-08-10 11:20:20 1043

原创 Python算法——求数组连续最大和

要求: 一个有n个元素的数组,这n个元素既可以是正数也可以是负数,数组中连续的一个或多个元素组成一个连续的子数组,求子数组和的最大值。例如数组[1,-2,4,8,-4,7,-1,-5],其最大和的子数组为[4,8,-4,7],最大值为15。分析: 方法一:蛮力法 找出所有的子数组,然后求出子数组的和,在所有子数组的和中取最大值。 ...

2019-08-09 21:43:25 2975

原创 Python算法——求数组中绝对值最小的数

要求: 对于升序排列数组,数组中有正数、负数、或0,求数组中元素的绝对值最小的数。例如数组[-10,-5,-2,7,15,50]中绝对值最小的数为-2。分析: 方法一:顺序比较法 最简单的方法就是从头到尾遍历数组元素,对每个数字求绝对值,然后比较就可以求出绝对值最小的数。 方法二:二分法 求绝对值最小的数分为三种情...

2019-08-09 18:23:15 6171

原创 Python算法——求解最小三元组距离

要求: 已知三个升序整数数组a[l], b[m]和c[n],请在三个数组中各找一个元素,使得组成的三元组距离最小。三元组的距离定义是:假设a[i]、b[j]和c[k]是一个三元组,那么距离为:Distance = max(|a[ i ] – b[ j ]|, |a[ i ] – c[ k ]|, |b[ j ] – c[ k ]|),请设计一个求最小三元组距离的最优算法,并分析时间...

2019-08-09 11:57:58 1037

原创 Python算法——求数组中两个元素最小距离(动态规划)

要求: 给定一个数组,数组中含有重复元素,给定两个数字num1和num2,求这两个数字在数组中出现位置的最小距离。分析: 方法一:蛮力法 主要思路为:对数组进行双重遍历,外层循环遍历查找num1,只要遍历到num1,内层循环对数组从头开始遍历找num2,每当遍历到num2,就计算他们距离dist。当遍历结束后最小的dist值就是他们最小的距离。...

2019-08-08 22:41:54 3040

原创 Python算法——查找数组前三名

要求: 在数组中找出前k大的值(如k=3)分析: 最大的三个数比数组中其他数都大,因此可以利用类似求最大值的方法求前三名,具体思路为:初始化前三名(r1:第一名,r2:第二名,r3:第三名)为最小整数,然后遍历数组:(1)如果当前值tmp大于r1:r3=r2,r2=r1,r1=tmp;(2)如果当前值tmp大于r2且不等于r1:r3=r2,r2=tmp...

2019-08-08 12:19:08 4485

原创 Python算法——找出数组中出现奇数次的数

要求: 数组中有N+2个数,其中N个数出现了偶数次,2个数出现了奇数次(这两个数不相等),请用O(1)空间复杂度,找出这两个数。分析: 方法一:字典法 定义一个字典,把数组元素值作为key,遍历整个数组,如果key值不存在,则将value设为1,如果key值已经存在,则翻转该值(如果为0,则翻转为1;如果为1,则翻转为0),完成数组遍历后,字典中...

2019-08-08 11:36:03 2399

原创 Python算法——找出数组中丢失的数

要求: 给定一个由n-1个整数组成的未排序数组序列,其元素都是1到n中不同整数。寻找数组序列中缺失整数分析: 方法一: 累加求和:假设缺失数字是x,那么这n-1个数一定是1~n之间除了x以外所有数,试想一下,1~n一共n个数的和是可以求出来的,数组中的元素和也是可以求出来的,二者相减,其值不就是缺失数字x 的值? 方法二:...

2019-08-08 09:50:00 3769

原创 Python算法——分治法查找数组中元素最小最大值

要求: 给定数组a1,a2,a3,...an,找出数组中最大值和最小值。(数组中两两各不相同)分析: 算法思想类似于上图,将数组两两分为一组,如果数组元素奇数个,就把最后一个元素单独分为一组,然后分别对每一组中相邻两个元素比较,把二者中值小的数放在数组左边,值大的数放在数组右边,只需比较n/2次就可以将数组分组完成。这时候最小值在每一组左边部分,最大值在每一...

2019-08-07 22:26:36 2699

原创 Python算法——在二叉排序树中找出第一个大于中间值的结点

要求: 对于一个二叉树,令f=(最大值 + 最小值)/2,设计一个算法,找出距离 f 值最近并且大于 f 值的结点。 6 / \ 3 9 / \ / \ 2 5 810 / / 1 ...

2019-08-07 16:59:07 494

原创 Python算法——二叉树镜像反转

要求: 给定一棵二叉树,要求输出其左右翻转后二叉树的层次遍历。解析: 两个步骤:镜像翻转:只需要遍历二叉树,每次访问一个结点时,交换其左右孩子。 层次遍历。代码实现:# -*- coding:utf-8 -*-from collections import dequeclass BiTNode(): def __init__(se...

2019-08-07 12:19:44 702

原创 Python算法——在二叉树中找出与输入整数相等的所有路径

要求: 从树的根节点开始往下访问一直到叶子结点经过的所有结点形成一条路径。找到所有的这些路径,使其满足这条路径上所有节点数据的和等于给定的整数。分析: 可以通过对二叉树的遍历找出所有的路径,然后判断各条路径上的所有结点的值的和是否满足给定的整数相等,如果相等,则打印出这条路径。实现思路为:对二叉树进行先序遍历,把遍历路径记录下来,当遍历到叶结点时,判断当前路径上...

2019-08-07 11:42:08 225

原创 Python算法——如何复制二叉树

要求: 给定一个二叉树,复制该树分析: 复制一颗二叉树,先复制其根结点,再复制左子树,最后复制右子树,从而复制完成;实现代码:# -*- coding:utf-8 -*-class BiTNode(): def __init__(self): self.data = None self.lchild = Non...

2019-08-07 10:46:37 1117

原创 Python算法——判断一个数组是不是二元查找树的后序遍历结果

要求: 输入一个整数数组,判断该数组是不是某二元查找树的后序遍历的结果。如果是返回true,否则返回false。 例如输入[1,3,2,5,7,6,4],由于这一整数序列是如下树的后序遍历结果: 4/ \ 2 6 / \ / \13 57 因此...

2019-08-07 10:14:58 631 1

原创 Python算法——把二叉树转化为双向链表

要求: 输入一颗二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能有新的结点,只能调整结点的指向。分析: 由于转换后的双向链表中结点的顺序与二叉树的中序遍历相同,因此,可以对二叉树的中序遍历算法进行修改,通过在中序遍历的过程中修改结点的指向来转换成一个排序的双向链表。代码实现:# -*- coding:utf-8 -*-class BiTN...

2019-08-05 19:30:18 1268

原创 Python算法——判断两棵二叉树是否相等

要求: 如何判断两颗树是否相等?(两棵树相等是指这两课树有着相同的结构,并且在相同位置上的结点有相同的值)分析: 如果两颗二叉树root1, root2相等, 那么root1和root2结点的值相同,同时它们的左右子树也有着相同的结构,并且对应位置上结点的值相等,既root1.data = root2.data,并且root1的左右子树与root2的左右子树相等...

2019-08-05 18:15:40 2914

原创 Python算法——把一个有序整数数组放到二叉树中

分析: 如果要把一个有序的整数数组放在二叉树中,那么所构造出来的二叉树必定也是一颗有序的二叉树。因此,取数组的中间元素作为根节点,将数组分成左右两部分,对数组的两部分用递归的方法分别构建左右子树。实现代码:# -*- coding:utf-8 -*-class BiTNode(): def __init__(self): self.data = ...

2019-08-05 17:34:56 343

原创 Python算法——从数组中找出满足a+b=c+d的两个数对

要求: 给定一个数组,找出数组中是否有两个数对(a,b)和(c,d),使得a+b=c+d,其中,a,b,c,d是不同元素。例如给定数组:[3,4,7,10,20,9,8],可以找到两个数对(3,8)和(4,7),使得3+8=4+7。分析: 算法思路为:以数组为单位进行遍历,在遍历过程中,把数对和数对的值存储在字典中(键为数对的和,值为数对),当遍历到一个键值对时...

2019-08-05 15:04:54 1399

原创 Python算法——从给定的车票中找出旅程

要求: 给定一趟旅途中所有的车票信息,根据这个车票信息找出这趟旅程的路线。例如:给定下面的车票:(“西安”--->“成都“”),(“北京”--->”上海”),(“大连”--->“西安”),(“上海” --->“大连”),那么可以得到的旅程路线为:北京 > 上海,上海>大连,大连>西安,西安>成都。假定给定的车票不会有坏,也就是有一个城...

2019-08-05 14:40:06 269

原创 Python算法——用两个栈模拟队列操作

要求: 用两个栈模拟队列,假设使用栈A与栈B模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。分析: 假设A和B都为空,可以认为A提供入队功能,栈B提供出队功能。要入队列,入栈A即可,而出队列则需要分两种情况考虑: (1)如果栈B不为空,则直接弹出栈B数据 (2)如果栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。...

2019-08-04 18:17:02 336

原创 Python算法——用O(1)的时间复杂度求栈中最小元素

要求: 由于栈具有后进先出(Last In First Out, LIFO)的特点,因此 push 和 pop 只需要对栈顶元素进行操作,只能访问到栈顶元素,而无法得到栈中最小的元素。那么,如何求栈中最小元素呢?解析: 1.利用一个变量记录栈底的位置,通过遍历栈中的所有元素找出最小值。但是这种方法的时间复杂度为 O(n)。 2.使用两个栈结构,一...

2019-08-04 17:45:40 983

原创 Python算法——翻转栈的所有元素

要求: 翻转栈的所有元素,如输入{1,2,3,4,5},其中1处在栈顶,翻转之后栈为{5,4,3,2,1},其中,5处在栈顶。方法一: 申请一个额外队列,先把栈中元素依次出栈放到队列里,然后把队列里的元素按照出队列顺序入栈,这样就可以实现栈的翻转,缺点为需要申请额外的空间存储队列,因此,空间复杂度较高。方法二: 递归实现 递归...

2019-08-04 15:58:05 583

原创 Python算法——实现队列的基本操作

要求: 实现一个队列的数据结构,具有:入队、出队、查看队尾首元素、查看队列大小等功能。方法一:数组实现# -*- coding:utf-8 -*-'''数组实现队列'''class MyQueue(): def __init__(self): self.arr = [] self.front = 0 #队列头 ...

2019-08-04 14:45:28 1600

原创 python算法——实现栈的基本操作

要求: 实现一个栈的数据结构,使其具有:入栈、出栈、取栈顶元素、判断栈是否为空、获取栈中元素个数方法一:数组实现# -*- coding:utf-8 -*-'''数组实现栈的数据结构:入栈、出栈、取栈顶元素、判断栈是否为空、获取栈中元素个数'''class MyStack: #模拟栈 def __init__(self): sel...

2019-08-04 11:52:38 696

原创 结构体(Struct)/共用体(union)

目录一、结构体 1.结构体变量 2.成员的获取和赋值二、结构体数组三、结构体指针(指向结构体的指针) 1.定义 2.获取结构体成员 3.结构体指针作为函数参数四、枚举类型(enum)五、共用体(union) 前面已经介绍了整型(int,long,….),浮点型(flaot,do...

2019-08-01 12:18:18 1389 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除