自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (1)
  • 收藏
  • 关注

转载 vector的clear操作的内部过程

最近在论坛看到一个提问帖子,问题是vector中存储了对象的指针,调用clear后这些指针如何删除?[cpp] view plaincopyclass Test  {  public:      Test() {}      ~Test() { cout "Test des" };     int main()  

2014-08-31 14:20:25 707

转载 母函数详解

母函数(Generating function)详解在数学中,某个序列的母函数是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身

2014-08-31 00:40:30 519

转载 n对括号的匹配方式以及Catalan数通项公式的推导

4对括号有多少种可能的合法匹配方式?n对括号呢?此题是卡特兰数的一个通常应用,相似的还有出栈顺序等。关于卡特兰数的具体内容,请参阅百度百科或Wiki.http://baike.baidu.com/view/2499752.htm 网络上可以搜到很多相关的题目和解答,但是鲜有易懂的推导过程。这里记录一种推导过程如下: 结论:对于n对括号,合法的排列

2014-08-28 21:40:20 2960

转载 概率题:一个有趣的抛硬币问题

假设有一个硬币,抛出字(背面)和花(正面)的概率都是0.5,而且每次抛硬币与前次结果无关。现在做一个游戏,连续地抛这个硬币,直到连续出现两次字为止,问平均要抛多少次才能结束游戏?注意,一旦连续抛出两个“字”向上游戏就结束了,不用继续抛。上面这个题目我第一次见到是在pongba的TopLanguage的一次讨论上,提出问题的人为Shuo Chen,当时我给出了一个解法,自认为已经相当简单

2014-08-26 14:00:14 2611

转载 最长递增子序列

问题给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。例如:给定一个长度为6的数组A{5, 6, 7, 1, 2, 8},则其最长的单调递增子序列为{5,6,7,8},长度为4.解法1:最长公共子序列法这个问题可以转换为最长公共子序列问题。如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2,

2014-08-25 17:22:59 431

转载 Nginx之超时管理(定时器事件)

Nginx事件管理主要是网络事件和定时器事件。下面介绍定时器事件管理,即超时管理。为什么要进行超时管理Nginx有必要对可能发生超时的事件进行统一管理,并在事件超时时作出相应的处理,比如回收资源,返回错误等。举例来说,当客户端对nginx发出请求连接后,nginx机会accept()并建立对应的连接对象、读取额护短请求的头部信息。而读取这个头部信息显然是要在

2014-08-18 16:37:16 571

转载 数组的引用的用途

在C++中可以定义数组的引用,用以解决C中无法解决的“数组降价”问题,我们先来看看什么是“数组降价”,先看如下代码: …void Test( char array[20] ){    cout }char array[20] = { 0 };cout Test( array );… 我们看到,对于同样的数组array,一个输出

2014-08-18 15:36:12 557

转载 linux下epoll如何实现高效处理百万句柄的

开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll来都感觉挺爽,确实快,那么,它到底为什么可以高速处理这么多并发连接呢?先简单回顾下如何使用C库封装的3个epoll系统调用吧。

2014-08-18 11:14:48 344

转载 “惊群”,看看nginx是怎么解决它的

在说nginx前,先来看看什么是“惊群”?简单说来,多线程/多进程(linux下线程进程也没多大区别)等待同一个socket事件,当这个事件发生时,这些线程/进程被同时唤醒,就是惊群。可以想见,效率很低下,许多进程被内核重新调度唤醒,同时去响应这一个事件,当然只有一个进程能处理事件成功,其他的进程在处理该事件失败后重新休眠(也有其他选择)。这种性能浪费现象就是惊群。惊群通常发生

2014-08-18 11:14:05 337

转载 深入理解HashMap

/**     *@author annegu     *@date 2009-12-02     */ Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。 1、hashmap的数据结构 要知道hashmap是什么,首先要搞清楚它的数据

2014-08-14 14:30:11 399

转载 nginx学习笔记(2):nginx基础概念之connection

在nginx中connection就是对tcp连接的封装,其中包括连接的socket,读事件,写事件。利用nginx封装的connection,我们可以很方便的使用nginx来处理与连接相关的事情,比如,建立连接,发送与接受数据等。而nginx中的http请求的处理就是建立在connection之上的,所以nginx不仅可以作为一个web服务器,也可以作为邮件服务器。当然,利用nginx提供的co

2014-08-14 13:06:26 414

转载 nginx学习笔记(1):nginx平台架构

nginx在启动后,za

2014-08-14 12:45:59 472

转载 引入哈希桶的概念来实现一个哈希表

http://www.nowamagic.net/academy/detail/3008088

2014-08-05 15:50:53 475

转载 编程之美------3.8 求二叉树中节点的最大距离

昨天花了一个晚上为《编程之美》,在豆瓣写了一篇书评《迟来的书评和感想──给喜爱编程的朋友》。书评就不转载到这里了,取而代之,在这里介绍书里其中一条问题的另一个解法。这个解法比较简短易读及降低了空间复杂度,或者可以说觉得比较「美」吧。问题定义如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点

2014-07-30 11:35:16 478

转载 编程之美------3.1 字符串移位包含的问题

给定两个字符串s1和s2,要求判定s2能否能被s1做循环移位得到的字符串包含。例如,s1=AABCD,s2=CDAA,返回true,给定s1=ABCD,s2=ACBD,返回false。思路1:找出所有循环移位,逐个进行字符串匹配。n*字符串匹配的复杂度。kmp可以做到线性,因此总的复杂度为n^2.思路2:s1复制一下,变成s1s1,如s1=ABCD,变成ABCDABCD

2014-07-30 09:09:36 468

转载 三种线性的非基于比较的排序算法:计数排序、桶排序与基数排序

转载自在计算机科学中,排序是一门基础的算法技术,许多算法都要以此作为基础,不同的排序算法有着不同的时间开销和空间开销。排序算法有非常多种,如我们最常用的快速排序和堆排序等算法,这些算法需要对序列中的数据进行比较,因为被称为基于比较的排序。基于比较的排序算法是不能突破O(NlogN)的。简单证明如下:N个数有N!个可能的排列情况,也就是说基于比较的排序算法的判定树有N!个叶子

2014-07-29 22:26:59 378

转载 编程之美------2.5 寻找最大的K个数

今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。      名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。      所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题。      解

2014-07-28 11:04:08 558

转载 蚂蚁爬杆问题

蚂蚁爬杆问题 有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,他们只会朝前走或掉头,但不会后退,当两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。求所有蚂蚁都离开木杆的最小时间和最大时间。 答案: 两只蚂蚁相遇后,各自掉头朝相反方向走。

2014-07-27 10:45:46 525

转载 最大子序列和问题

问题描述:    输入一组整数,求出这组数字子序列和中最大值。也就是只要求出最大子序列的和,不必求出最大的那个序列。例如:序列:-2 11 -4 13 -5 -2,则最大子序列和为20。序列:-6 2 4 -7 5 3 2 -1 6 -9 10 -2,则最大子序列和为16。 算法一://穷举法,复杂度O(n^3) long maxSubSum1(co

2014-07-26 20:05:59 426

转载 有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。

一,题目:有两个序列a,b,大小都为n,序列元素的值任意整数,无序;要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。      例如:                 var   a=[100 ,99 ,98 ,1 ,2 ,3];       var  b=[1, 2, 3, 4, 5, 40];      有两个序列a,b,大小都为n,序列元素的值

2014-07-25 16:59:29 687 1

转载 逻辑题---金条分块

你让一些人为你工作了七天,你要用一根金条作为报酬。金条被分成七小块,每天给出一块。如果你只能将金条切割两次,你怎样分给这些工人?这个问题是很老的问题了。把金条分成1、2、4段1:给出1. 2:给出2,还回1. 3:给出1. 4:给出4,还回3. 5:给出1. 6:给出2,还回1. 7:给出1.就像人民币只需要1、2、5面值的就能解决所有的找零问题。不过个人认为这

2014-07-25 16:32:33 1390

转载 关于概率的面试题

当前面试中各大名企经常出现各种各样的概率类面试题。究其原因,我觉得是概率型面试题可以综合考查面试者的思维能力、应变能力、数学能力。在这里对各种类型的概率型题目进行了收集和总结,希望在自我总结的同时对大家有所帮助。1、给你一个数组,设计一个既高效又公平的方法随机打乱这个数组(此题和洗牌算法的思想一致)方法比较简单,基本思想是每次随机取一个数,然后把它交换到最后

2014-07-21 15:38:48 1288

转载 一道概率题---网易面试

有6种不同颜色的球,分别记为1,2,3,4,5,6,每种球有无数个。现在取5个球,求在以下的条件下:1、5种不同颜色的球,2、4种不同颜色的球,3、3种不同颜色的球, 4、2种不同颜色的球,它们的概率。

2014-07-21 15:08:23 640 1

转载 [leetcode] word ladder

对于之前没有接触过该类型题目的人来说,此题无疑是个难题,本人提交了10次才正确通过,期间遇到了非常多的问题,感觉几乎把OJ的所有错误遍历了一遍,下面详细说说自己做该题的经验。首先承认,我一开始并没有想到什么图模型,或者说是一点思路都没有。然后我就冥思苦想,首先想到了可以先构造一个二维矩阵,判断给定的词之间是否能两两一步到达,这一步可以通过两层循环加字符串的遍历完成,应该

2014-07-19 14:38:33 444

转载 unorder_map

标准std中只有map,是使用平衡二叉树实现的,查找和添加的复杂度都为O(log(n)), 没有提供hash map,gnu c++提供了hash_map,是一个hash map的实现,查找和添加复杂 度均为O(1)。

2014-07-19 11:33:10 1347

转载 Big Endian 和 Little Endian优劣

Big Endian 和 Little Endian优劣来自:Dr. William T. Verts, April 19, 1996Big Endian判别一个数的正负很容易,只要取offset0处的一个字节就能确认。Little Endian长度为1,2,4字节的数,排列方式都是一样的,数据类型转换非常方便。

2014-07-15 21:38:29 289

转载 海量数据处理算法—Bloom Filter

1. Bloom-Filter算法简介        Bloom-Filter,即布隆过滤器,1970年由Bloom中提出。它可以用于检索一个元素是否在一个集合中。       Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有

2014-07-15 21:31:15 440

转载 高斯模糊的算法

作者: 阮一峰通常,图像处理软件会提供"模糊"(blur)滤镜,使图片产生模糊的效果。"模糊"的算法有很多种,其中有一种叫做"高斯模糊"(Gaussian Blur)。它将正态分布(又名"高斯分布")用于图像处理。本文介绍"高斯模糊"的算法,你会看到这是一个非常简单易懂的算法。本质上,它是一种数据平滑技术(data smoothing),适用于多个场

2014-07-14 11:04:25 498

转载 TF-IDF与余弦相似性的应用(三):自动摘要

作者: 阮一峰有时候,很简单的数学方法,就可以完成很复杂的任务。这个系列的前两部分就是很好的例子。仅仅依靠统计词频,就能找出关键词和相似文章。虽然它们算不上效果最好的方法,但肯定是最简便易行的方法。今天,依然继续这个主题。讨论如何通过词频,对文章进行自动摘要(Automatic summarization)。如果能从3000字的文章,提炼出150字的

2014-07-14 11:03:42 422

转载 TF-IDF与余弦相似性的应用(一):自动提取关键词

原文作者:阮一峰这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题。有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才能正确做到?这个问题涉及到数据挖掘、文本处理、信息检索等很多计算机前沿领域,但是出乎意料的是,有一个非常简单的经典算法,可以给出令人相当满意的结果。它

2014-07-14 11:01:55 322

转载 TF-IDF与余弦相似性的应用(二):找出相似文章

作者: 阮一峰上一次,我用TF-IDF算法自动提取关键词。今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。为了找出相似的文章,需要用到"余弦相似性"(cosine similiarity)。下面,我举一个例子来说明,什么是"余弦相似性"。

2014-07-14 11:00:11 368

转载 动态规划--最大连续子串问题

最大连续子串问题   首先,要明白子串和子序列的区别。1)子串(Substring)是串的一个连续的部分;2)子序列(Subsequence)则是从不改变序列的顺序,而从序列中去掉任意的元素而获得的新序列;(关于求最长子序列的算法见博客:动态规划(5)-字符串相似度算法))       最大连续子串问题是给定一组元素,求使得连续子串的值最大,比如最大连续和子串、

2014-07-12 16:58:35 967

转载 小于号重载须注意的问题——strict weak ordering

这是今天写程序中遇到的两个诡异的问题。我的 IDE 是 VC++2005 ExpressiEdition 。 第一个问题是关于 map 的。话不多说,以下 20 多行的 C++ 代码重现了我遇到的问题: #include  #include  using namespace std;   struct S {      int x, y;      S(int 

2014-07-12 14:36:49 542

原创 [leetcode] Valid Number

1Validate if a given string is numeric.Some examples:"0" => true" 0.1 " => true"abc" => false"1 a" => false"2e10" => trueclass Solution {public: bool isNumber(const char *s) {

2014-07-12 14:27:11 351

原创 [leetcode] String to Integer (atoi)

implement atoi to convert a string to an integer.Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input ca

2014-07-12 09:42:19 447

转载 加强版水王:找出出现次数刚好是一半的数字

加强版水王:找出出现次数刚好是一半的数字  1.用了两个变量来记录水王。#include using namespace std; int Find(int* a, int N) { int candidate1,candidate2; int nTimes1, nTimes2, i; for(i = nTim

2014-07-11 17:50:19 1005

转载 【C++11】新特性——auto的使用

C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。1. 自动类型推断    auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。

2014-07-11 11:45:57 383

转载 【C++11】新特性——引入nullprt

1. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1.1 NULL在C中的定义在C中,习惯将NULL定义为void*指针值0:[cpp] view

2014-07-11 11:42:14 561

转载 [leetcode] Candy

原题:There are N children standing in a line. Each child is assigned a rating value.You are giving candies to these children subjected to the following requirements:Each child must have at l

2014-07-10 10:15:35 355

原创 [leetcode] climbing Stairs

Climbing StairsYou are climbing a stair case. It takes n steps to reach to the top.Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?题目

2014-07-09 15:56:14 396

空空如也

空空如也

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

TA关注的人

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