自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

上善若水

天道酬勤

  • 博客(21)
  • 收藏
  • 关注

原创 Hough forest编译问题

Hough Forest链接老出错,尽管已经把opencv的库安装好了,依然出现undefined reference问题。根据经验做了如下试验:由于我在编译opencv的时候将 prefix设置自定义的安装目录,因此在编译hough forest之前我首先将我opencv的安装目录添加到/etc/ld.so.conf目录下,然后ldconfig一下,发现依然不行,最终在网上找打了一个合适的办法成功

2017-02-25 16:09:56 632

原创 opencv1.0编译问题汇总

最近研究hough forest 源码download下来发现依赖opencv1.0,尝试修改makefile让其去链高版本的opencv发现符号表出了问题,于是开始编译opencv1.0。困难重重,终于编译成功:参考:http://www.itdadao.com/articles/c15a1104676p0.htmlOpenCV的编译方式有两种: 1、传统的./con

2017-02-25 15:42:38 1226

原创 vector使用swap释放内存

使用vector的时候一般会先调用reserve扩充一个比较大的容量,以免vector在push_back超过capacity时自动扩容造成的低效率的拷贝操作。当我们插入数据完成之后,想要释放多余的空间怎么办? 只需要一条语句就可以搞定:vector<int>(ivec).swap(ivec);又叫做收缩到合适shrink to fit另外,如果我们想强行释放vector所占的内存,那么可以:ve

2017-02-22 21:35:27 4193

原创 用nginx搭简单反向代理服务器

反向代理原理简介反向代理(Reverse Proxy)方式是指用代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。 举个例子,一个用户访问 http://www.example.com/readme,但是 www.example.com 上并不存在

2017-02-22 14:58:22 1087

原创 LeetCode225—Implement Stack using Queues

原题链接 Implement the following operations of a stack using queues. push(x) – Push element x onto stack. pop() – Removes the element on top of the stack. top() – Get the top element. empty

2017-02-20 20:22:11 443

原创 最接近0的数组子序列

给定一个数组,在数组中找一段子序列,要求子序列的和最接近0。 例如: 输入:[-3, 1, 1, -3, 5], [0, 2], [1, 3], [1, 1], [2, 2] ,[0, 4]都是可行解sum[i,j]表示[i,j]索引的所有元素的和。 sum[i,j]可以换算成下面公式: sum[i,j]=sum[0,j]-sum[0,i] + num[i]这里为了方便起见,在写代码时

2017-02-14 20:27:39 1116

原创 旋转数组求最小值

旋转数组的概念就是对有序数组循环向右移动K位得到的数组。 例如[1,2,3,4,5]经过右移2位后旋转后得到:[4,5,1,2,3]一、如何得到旋转数组比如说现在要求旋转右移K位,求移动后的结果。第一步要对K进行处理,因为假设原数组是[1,2,3]: 当K=1,旋转数组为[3,1,2] 当K=2,旋转数组为[2,3,1] 当K=3,旋转数组为[1,2,3] 当K=4,旋转数组为[3,1,

2017-02-14 16:44:14 2125

原创 第一个没有出现的正整数

题目描述在一个数组中,找出从1~n 第一个没有出现的正整数,n是数组容量。分析这个题目是有多种解法:一、暴力求解从1~n每次迭代搜索,复杂度为O(n2)O(n^2)二、排序先排好序列再用二分,复杂度可以降低到O(nlogn)O(nlogn)三、哈希申请额外的空间,大小为n,表示1~n个正整数。遍历原数组,把出现的且在1~n范围的数的索引设为true,也就是hash[nums[i]]=true,且1<

2017-02-12 22:10:27 1176

原创 求局部峰值

在序列中如果一个数比其左右两边都要大,那么称之为局部峰值,一个序列中可能有一个或者多个局部峰值,找出其中一个。比较简单的办法是从0开始迭代,这样的时间复杂度是O(n)O(n),我们知道二分查找的复杂度是O(logn)O(logn),因此考虑用二分的思路来做。class Solution {public: int findPeakElement(vector<int>& nums) {

2017-02-12 20:38:02 2270 1

原创 二分查找

二分查找是既简单又困难的部分,如果序列有序,我们可以使用二分查找,总结如下:一、递归的二分查找递归的方法来解决二分查找。int bsearch(vector<int>&nums,int low,int high,int target){ if(low>high) return -1; int mid=(low+high)/2; if(nums[mid]>ta

2017-02-12 18:20:17 698

原创 选择绝对众数

绝对众数的概念表示序列中的唯一众数,且出现的次数大于N2\frac{N}{2},NN表示序列的长度。 实际上在序列中如果某个数的出现次数超过该序列长度的一半,那么该数一定是唯一的众数。解决这个问题的办法有多: 1.排序,时间复杂度为O(nlogn)O(nlogn),返回nums[N/2]。 2.使用hash,时间复杂度可以降低到O(n)O(n),但需要额外的空间复杂度。有更好的办法,O(n)O

2017-02-12 16:00:01 684

原创 整数次幂的递归求解

整数次幂一般解法时间复杂度O(n)O(n)的方法可以迭代n次,然后相乘结果返回,例如求xnx^n伪代码:double pow(x,n){ res=x; while(n--) res*=x; return res; }递归法使用递归的方法可以将复杂度降低到O(logn)O(logn) 思路是比如一个数的8次幂,可以看成4次幂乘4次幂,进而分成

2017-02-09 00:07:31 3716 1

原创 Polya问题

Polya问题给定红色和蓝色给八个棋子涂色,求所有的涂色方案,其中某种方案可以通过旋转到另一种,则这两种方案视作一种。研一组合数学讲的波利亚定义,旋转轮换的内容。如果用代码解决,可以将八个棋子视作二进制的8位。那么如果不考虑条件所说的旋转算一做,那理论上有255种不同的方案。同样是筛选法的思想,假设现在一共255种方案,那么遍历这些方案,对某种方案循环左移8次(8次后肯定会回到相同的位置),循环左移

2017-02-09 00:06:11 623

原创 Eratosthenes筛选法求小于N的所有素数个数

Eratosthenes筛选法求小于N的所有素数个数

2017-02-09 00:05:06 2457

原创 字符串应用之最长回文串

以前做过一个方法就是从中间往两头扩展。manacher算法是对这种算法的优化。比如字符串是FGFXXAXXFGF,在以A为中心的回文串中,还包含FGF这样回文串,那么当我们计算右边的FGF时,可以利用左边FGF的信息,因为他们是对称的,这就是Manacher算法的思想。另外考虑奇数和偶数的不同情况,预先对字符串进行预处理,每隔一个字符插入一个“#”,那么原字符假如是ABA将变成#A#B#A#,原字符

2017-02-07 12:43:40 752

原创 字符串应用之全排列

之前在leetcode做过全排列的题目,LeetCode46和LeetCode47分别是不带重复元素和带重复元素的全排列,当时图个简单,直接用STL的next_permutation去做了,这一次把递归算法学习了一遍。不重复元素的全排列对于1234….n这样的全排列,他的全排列有n!n!种,因此求解该问题的时间复杂度为n!n!。其实要求全排列,无非就是对元素进行交换,使他们出现在不同的位置。代码cl

2017-02-06 14:53:23 549

原创 字符串应用之最长上升字序列LIS

用LCS解决LIS问题最长上升子序列有它的套路,不过用LCS算法是可以解决的: 假设原序列为AA 第一步:现在对原序列进行排序得到排序后的序列BB 第二步:考虑原序列AA可能有重复元素,对序列BB还要进行去重得到序列B′B^{'} 第三步:对AA和B′B^{'}做LCS运算,即可得出原序列AA的LIS最长上升子序列。好,这个算法在LeetCode是Memory Limit代码class So

2017-02-06 13:00:51 1014

原创 字符串应用之最长公共子序列和最长公共子串

最长公共子串和最长公共子序列

2017-02-05 18:26:44 637

原创 栈的应用之最长匹配括号长度

最长匹配括号长度主要介绍栈的一个应用,之前做过类似的题目,这次彻底搞懂,记录之。。找到最长匹配括号长度,这题比较难,之前刷题的时候就觉得,这次学到了。 比如说()()()(((最长匹配括号长度为6,((())最长匹配括号长度是4。 1.如果是左括号肯定是压栈(压入该左括号在串中的索引)。 2.如果是右括号: 那么就要分两种情况: 第一种情况是栈不为空,说明找到了匹配的左括号,

2017-02-05 18:22:09 710

原创 单链表

单链表

2017-02-05 18:17:59 491

原创 redis源码学习之压缩列表

压缩列表列表键和哈希键的底层实现。是为了节约内存而实现。压缩列表是一段连续的内存,每个属性都会有固定的编码大小,例如对于字符串来说,我们需要知道字符串的长度,假设小于63字节,那么我们只需要一个字节的大小来表示(2位标识,6位数据);而存储的结构是整型的数的话,我们只需要1个字节来表示该整型是16/32/64位整型。压缩列表用一段连续内存表示unsigned char *类型指针来访问,不过它人为的

2017-02-03 23:09:11 461

空空如也

空空如也

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

TA关注的人

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